Подтвердить что ты не робот

Строковый вывод Unicode С#

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

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

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

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

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

UPDATE

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

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

4b9b3361

Ответ 1

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

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

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

enter image description here

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

enter image description here

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

enter image description here

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

Ответ 2

private string UnicodeString(string text)
{
    return text;
}

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

Ответ 3

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

Ответ 4

Вы можете использовать

Encoding.GetEncoding(28595);