2010-04-14 115 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控制檯。