【发布时间】:2017-09-18 15:39:52
【问题描述】:
过时的 Uri(string, bool) 构造函数用于从已经转义的字符串构造 URI(如果出现无效字符串,过时可能不会破坏程序)。但是,我发现自己需要通过 URI 传递文字字节,我想不出更好的编码方式。
我正在构建一个data: URI,这是一种传递整个资源而不是其标识符的标准化方法。虽然我知道它有一个 ;base64 说明符来将传递的数据标记为以 base64 编码,但在某些情况下,如果没有 base64,URI 会更短,例如二进制数据较少时。因为我不想担心编码,我只想将字节与 URI 一起作为 URI 编码字符串传递,使用 HttpUtility.UrlEncode(byte[])。
由于我实际上别无选择,只能让 .NET 为我编码字符串,而不必使用过时的构造函数,并且没有 Uri(byte[]) 构造函数(我认为应该有),什么是构建 URI 的选项?
我考虑过使用Encoding.GetEncoding(1252) 从字节创建一个字符串并使用它,因为 cp1252 可以解码任何字符,但似乎内部 Uri 编码方法使用 UTF-8 编码字符,所以我发现根本无法使用文本编码。
我有哪些选择?如果没有其他办法,是否可以继续使用过时的构造函数?
【问题讨论】:
标签: c# .net encoding uri data-uri