C#: How to print a unicode string to console?

17,612

Solution 1

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

Solution 2

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.

Share:
17,612
Lopper
Author by

Lopper

Updated on June 04, 2022

Comments

  • Lopper
    Lopper almost 2 years

    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?