有一个汉字在 UTF-8 中显示为 F0 A4 AD A2。这个字符在这里描述:http ://en.wikipedia.org/wiki/UTF-8
U+24B62 F0 A4 AD A2
当我在C#中运行此代码时...
byte[] data = { 0xF0, 0xA4, 0xAD, 0xA2 };
string abc = Encoding.UTF8.GetString(data);
Console.WriteLine("Test: description = {0}", abc);
...我将输出重定向到文本文件,然后使用 notepad.exe 选择 UTF-8 编码打开它。我希望得到输出,但确实得到两个问号 (??)。
字节序列是正确的。它在 Perl 中工作:
print "\xF0\xA4\xAD\xA2";
在输出中,我得到
所以我的问题是:为什么我会得到“??” 而不是C#中的“” ?
PS 这个字符没什么特别的:我对任何字符(2、3 或 4 字节长)都得到了相同的东西。