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:很可能。或者其他任何老式的一個字節編碼。 –