0
为什么C#UTF-8字节混乱
System.Text.Encoding.UTF8.GetString(new byte [] { (byte)0xa0 });
不会导致
"\u00a0"
?
改回"\ufffd"
。
根据https://en.wikipedia.org/wiki/Non-breaking_space 0xa0在UTF-8中应该是一个有效的非分隔空间。
为什么C#UTF-8字节混乱
System.Text.Encoding.UTF8.GetString(new byte [] { (byte)0xa0 });
不会导致
"\u00a0"
?
改回"\ufffd"
。
根据https://en.wikipedia.org/wiki/Non-breaking_space 0xa0在UTF-8中应该是一个有效的非分隔空间。
0xa0在UTF-8中应该是一个有效的非破坏空间。
不,它不是。这在Latin1和Unicode(或UTF-16和UTF-32)字符集中都是有效的。
在UTF-8编码中,它编码为C2 A0
。一般来说,只有低于0x80
的字符才会映射到UTF-8的单个字节。
啊,谢谢。所以如果我有一个8字节的文本与应该是一个空格的0xa0字节,那么它最有可能是Latin1编码? – CoderBrien
有几种编码将U + 00A0映射到0xA0。拉丁-1(反过来在ISO和Windows之间的这个名称的编码之间是不明确的)是一个可能的赌注,但不是确定的。 –
@CoderBrien:很可能。或者其他任何老式的一个字节编码。 –