Console.Write () - отображать расширенные символы ascii?

2

Я могу правильно отображать стандартные символы ASCII (до 127), такие как "сердце", "заметьте", вы знаете, что я имею в виду. Я хотел бы также отображать те, которые я могу использовать для рисования стен (например, U0205), но это не работает. Ну, это работает, но выглядит "?". Как я могу их отобразить? Спасибо.

  • 0
    Unicode U + 0205 - это «латинская строчная буква e с двойной могилой», поэтому я не уверен, о каком персонаже вы говорите ...
  • 0
    Показать актуальный код.
Теги:
console
extended-ascii

2 ответа

16
Лучший ответ

Приложения в режиме консоли ограничены кодировкой 8-битной кодовой страницы. По умолчанию на многих машинах используется IBM437, кодовая страница, соответствующая старому набору символов IBM PC. Вы можете изменить кодовую страницу, назначив свойство OutputEncoding:

        Console.OutputEncoding = Encoding.UTF8;

Но теперь у вас типичная проблема с шрифтом. Консоли по умолчанию имеют шрифт "Терминал", старый шрифт устройства с глифами в нужном месте для создания набора символов IBM PC. Существует не так много шрифтов, которые могут создавать правильные глифы, которые соответствуют кодовым точкам Unicode. Консолас об этом, доступный в Vista и Win7.

Но это не то, о чем вы просите, я думаю, я предполагаю, что вы действительно спрашиваете о старых символах рисования. Это работает без каких-либо изменений настроек консоли, вам просто нужно использовать правильные символы Юникода. Вот пример, который должен выдержать копирование и вставка:

class Program {
    static void Main(string[] args) {
        Console.WriteLine("╒════════╕");
        Console.WriteLine("│ Hello  │");
        Console.WriteLine("│ world  │");
        Console.WriteLine("╘════════╛");
        Console.ReadLine();
    }
}

Чтобы найти эти символы, используйте апплет Windows charmap.exe. Установите флажок "Расширенный вид" и введите "поле" в текстовом поле "Поиск", сетка будет заполняться символами рисования окна. Первым удобным для использования, который будет правильно преобразован в консоль, является "\ u250c".

1

Проблема связана с консольным приложением, а не с вашей программой. Стандартная консоль в windows (cmd.exe), похоже, не поддерживает Unicode правильно - например, попробуйте скопировать строку ниже и вставить непосредственно в окно cmd.exe:

Fußball Ö ü

PowerShell, похоже, страдает от той же проблемы.

Одним из возможных решений вашей проблемы является создание выделенного окна/формы для использования в качестве "выходной консоли" вместо использования реальной консоли, через которую было выполнено приложение.

  • 0
    Эти символы прекрасно отображаются в окне консоли и PowerShell под Server 2008 с использованием растровых шрифтов по умолчанию. Какую версию Windows вы используете?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню