繁体   English   中英

UTF-8编码和解码问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM