Reputation: 3537
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?
Upvotes: 3
Views: 18508
Reputation: 5329
Please see the following answer: c# unicode string output
In short:
Console.OutputEncoding = Encoding.UTF8;
Then change the console font to Lucida Console, which supports unicode characters.
Upvotes: 1
Reputation: 32323
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
Upvotes: 3