C #: Как вывести строку Unicode на консоль? - PullRequest
3 голосов
/ 14 апреля 2010

Как вывести на консоль значение Юникода String в C #?

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

То, что я получаю за вышесказанное, это «?????????»

Однако я вижу следующее в окне autos и local в режиме отладки для значения unicodeString, которое я и хотел отобразить.

"慒 䑷 瑡 彡 〵 〶 ㅟ ⸷ 慣"

Как вывести на консоль правильный результат, как показали автоматические и локальные окна отладки?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2010

Я подозреваю, что эти байты действительно в 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

1 голос
/ 02 октября 2013

Пожалуйста, смотрите следующий ответ: c # вывод строки Unicode

Короче говоря:

Console.OutputEncoding = Encoding.UTF8;

Затем измените шрифт консоли на Lucida Console, которая поддерживает символы Юникода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...