2010-04-14 122 views
3

如何打印出在C#中一个Unicode String到控制台的价值?C#:如何打印一个unicode字符串到控制台?

byte[] unicodeBytes = new byte[] 
    {0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 
    0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x70, 0x63, 
    0x61, 0x70}; 

string unicodeString = Encoding.Unicode.GetString(unicodeBytes); 

Console.WriteLine(unicodeString); 

我得到上面是 “?????????”

但是,我看到当地的汽车窗以下,并在调试模式的UnicodeString的值,它是我想要的东西时显示。

“慒䑷瑡彡〵〶ㅟ⸷惯”

我如何打印出正确的结果到控制台什么调试的汽车和本地窗口证明?

+0

它是一个8位编码,不是Unicode。可能是他们中的很多(当然,对所有的人),但Encoding.ASCII.GetString()将正常工作,因为它们都是ASCII码。 – 2010-04-14 17:25:07

+0

这可能有助于http://stackoverflow.com/questions/2492077/output-unicode-strings-in-windows-console-app – CDSO1 2010-04-14 16:00:17

回答

3

我怀疑这些字节是真的UTF8,而不是在UTF16,你应该。

看,如果你改变你的代码:

byte[] unicodeBytes = new byte[] 
    {0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 
    0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x70, 0x63, 
    0x61, 0x70}; 

string unicodeString = Encoding.UTF8.GetString(unicodeBytes); 

Console.WriteLine(unicodeString); 

你会得到输出:

应用/ PCAP

+2

你只需输入一些ascii代码。甚至不使用任何Unicode字符.... – 2011-06-01 12:51:51

1

请看下面的答案: c# unicode string output

简而言之:

Console.OutputEncoding = Encoding.UTF8; 

然后将控制台字体更改为支持unicode字符的Lucida控制台。