C # Unicode строка вывода - PullRequest
       1

C # Unicode строка вывода

22 голосов
/ 20 февраля 2011

У меня есть функция для преобразования строки в строку Unicode:

private string UnicodeString(string text)
{
    return Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text));
}

Но когда я вызываю эту функцию, результат вывода неверный. Похоже, моя функция не работает.

Console.WriteLine(UnicodeString("добры дзень")) печать на консоли только такие вопросы: ????? ????

Есть ли способ сказать консоли, чтобы она отображалась правильно?

UPDATE

Похоже, проблема не в Unicode. Я думаю, может быть, он отображает вопросительные знаки, потому что у меня нет правильной локали в системе (Windows 7)?

Есть ли способ заставить его работать без изменения локали?

Ответы [ 3 ]

40 голосов
/ 20 февраля 2011

Сначала измените выходную кодировку на UTF8:

Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("добры дзень");

Теперь вы все равно увидите вопросительные знаки.Причина в том, что шрифт консоли по умолчанию не поддерживает кириллицу .Измените шрифт консоли:

enter image description here

Если вам повезет, вы должны найти другой шрифт с поддержкой Unicode:

enter image description here

Измените шрифт, и вы сможете увидеть текст:

enter image description here

В общем случае, если вы хотите надежно отображать все символы Юникода, консольвероятно, не подходит для вас.Смотрите также: C # консольный шрифт (комментарии тоже интересны)

0 голосов
/ 20 февраля 2011

Просто сделайте простой простой Console.WriteLine("добры дзень");, не нужно никаких преобразований.

0 голосов
/ 20 февраля 2011
private string UnicodeString(string text)
{
    return text;
}

Строка text уже в Unicode. Все внутренние строки C # являются Unicode. Когда вы конвертируете его в ASCII, вы теряете символы. Вот почему вы получаете ????? ????.

...