views:

190

answers:

2

How do I print out the value of a unicode String in C# to the console?

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);

What I get for the above is "?????????"

However, I see the following in the autos and local window when in debug mode for the value of unicodeString which is what I wanted to display.

"慒䑷瑡彡〵〶ㅟ⸷慣�"

How do I print out the correct result to the console as what the autos and local window for debugging demonstrated?

+3  A: 

I suspect these bytes are really in UTF8, not in UTF16 as you supposed.

See, if you change your code to:

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);

You'll get the output:

application/pcap

Alex