【发布时间】:2013-02-18 19:44:36
【问题描述】:
有一个汉字???在 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# 中?
附:这个字符没有什么特别之处:我对任何字符(2、3 或 4 字节长)都得到了相同的结果。
【问题讨论】:
-
在 Perl 的情况下,“在输出中”是指将输出重定向到文本文件并用记事本打开吗?
-
您需要确保使用 UTF8 编码写入文件。您可以发布写入文件的代码吗?
-
您不能使用文件的任何特殊原因?控制台和 Unicode 处理起来有些痛苦。在这种情况下,Oleksandr Pshenychnyy 的回答 (+1) 可能会对您有所帮助...
-
@JakobChristensen 根据“将输出重定向到文本文件”没有写入文件的代码。检查文件的实际内容也是一个好点。
-
@AlexeiLevenkov:你是对的。我误读了这个问题。
标签: c# encoding utf-8 character-encoding hex