为什么这条线
System.Text.Encoding.UTF8.GetBytes("ABCD±ABCD")
给我 10 个字节而不是 9 个字节?虽然 ± 是 char(177)
是否有 .Net 函数/编码可以将此字符串正确转换为 9 个字节?
为什么这条线
System.Text.Encoding.UTF8.GetBytes("ABCD±ABCD")
给我 10 个字节而不是 9 个字节?虽然 ± 是 char(177)
是否有 .Net 函数/编码可以将此字符串正确转换为 9 个字节?
虽然 ± 是 char(177)
而 UTF-8 编码是 0xc2 0xb1 - 两个字节。基本上,每个代码点 >= 128 将占用多个字节 - 其中字节数取决于代码点的大小。
使用 UTF-8 编码时,该数据为 10 个字节。这里的错误是您期望它应该花费 9。
您应该使用编码来Windows-1251
获取±
177
var bytes = System.Text.Encoding.GetEncoding("Windows-1251").GetBytes("ABCD±ABCD");
该视频很好地解释了 utf-8 编码:http ://www.youtube.com/watch?v=MijmeoH9LT4 。看完之后你会明白为什么它会导致更多的字节,你会想。
±
落在 ASCII 范围之外,因此它由 2 个字节表示。