[英]UTF-8 Encoding and decoding issue
我在将文本与UTF-8编码之间相互转换时遇到问题。 我这里有字节数组
byte[] c = new byte[] { 1, 2, 200 };
我将其转换为UTF-8字符串并返回字节数组,
Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(c));
据我了解,我应该从中期待的是一个3字节的数组。 对? 但是,这就是我所得到的。
byte[5] { 1, 2, 239, 191, 189 }
这是什么原因? 我知道239, 191, 189
组合在UTF-8特价中称为REPLACEMENT CHARACTER
。
这也是一个更大问题的一部分。
并非所有字节序列都是有效的UTF-8。 看来您的数组(1、2、200)在UTF-8中无效(这就是添加此特殊错误字符的原因)
MSDN关于Encoding.UTF8说:
它返回一个提供Unicode字节顺序标记(BOM)的UTF8Encoding对象。 要实例化不提供BOM的UTF8编码,请调用UTF8Encoding构造函数的任何重载。
1)您的示例中没有BOM( https://en.wikipedia.org/wiki/Byte_order_mark )。
2)200-前导字节。 必须跟随足够的连续字节
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.