30

Я установил новую оболочку Bash на Windows 10. Я использую это вместе с ZSH. Однако ни один из символов utf8 не работает, они отображаются в виде квадратных блоков. Как мне включить кодировку utf8 в оболочке по умолчанию? Это возможно?

4 ответа4

9

Щелкните правой кнопкой мыши на строке заголовка в верхней части окна bash, выберите свойства записи. В открывшемся окне есть вкладка, где вы можете изменить шрифт. Я изменил шрифт на "Исходный код Pro" и размер 14.

Выглядит хорошо, и все символы UTF-8 работают.

8

Чтобы добавить к ответу Doctorj, есть пара шрифтов, которые установлены по умолчанию, которые вы можете использовать (в оболочке Windows 10 bash).

Испытанные языки: болгарский, украинский, упрощенный китайский, традиционный китайский, датский, французский, немецкий, итальянский, японский, казахский, корейский, македонский, монгольский, норвежский, польский, португальский, русский, сербский, испанский, шведский.

Следующие шрифты по умолчанию отображают все наблюдаемые символы:

  • MS Gothic
  • NSimSun
    • Не отображается весь казахский язык.
  • SimSun-ExtB (растровый шрифт) - Моя рекомендация

И MS Gothic и NSimSun

  • Разбивает нелатинские не-CJK (китайский, японский, корейский) языки (македонский, казахский, болгарский).
  • Имеет нечетное вертикальное смещение на акцентированных латинских символах (а, é)
  • Не отображал хотя бы одного македонского персонажа.

SumSun-ExtB (растровый шрифт):

  • Есть предупреждение о том, что растровые шрифты могут отображаться плохо.
  • Большинство символов отображаются темно (могут быть проблемы с низкой яркостью экрана).
  • Символы, отличные от ASCII, являются яркими по сравнению с символами ASCII (возможное решение, используйте параметр жирным шрифтом).
  • Символы всех языков близко друг к другу (легче увидеть расстояние между словами).
  • Кажется более надежным для нелатинских не CJK языков.

С любым из этих шрифтов, как с командной строкой, так и с PowerShell, странные вещи случаются, когда вы нажимаете на символы, не входящие в ASCII, хотя при выделении текста все возвращается на круги своя.

Чтобы установить шрифт: Обратите внимание, что вам нужно изменить шрифт для используемой оболочки Windows, такой как командная строка или PowerShell, а не для Linux через bash. Эта ссылка описывает, какие шрифты можно использовать в командной строке (моноширинные шрифты, а также как установить и выбрать шрифт для командной строки). Добавление шрифтов в командную строку

  • Вызовите редактор реестра (запустите "regedit")
  • Найдите папку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
  • Щелкните правой кнопкой мыши (или Изменить) -> Создать -> Строковое значение
  • Назовите шрифт на 0 больше, чем последний (например, "000").
  • Щелкните правой кнопкой мыши запись и выберите «Изменить ...»
  • Введите имя шрифта или файла OTF (без .otf).

Информацию об установке шрифтов через командную строку в Windows смотрите в этом вопросе и ответах.

  • Я попытался установить "Исходный код Pro", но он не появился в шрифтах для меня.
  • Я установил DejaVu Sans Mono, и он работает для большинства языков, но совсем не работает для CJK.
  • Я установил моноширинный шрифт Google Noto, и он работал, но не для CJK. Кроме того, они специально говорят, что у них нет монопространственной поддержки CJK.
  • Я установил Google Inconsolata, и это не стоило того.
  • Я установил GNU FreeFont (FreeMono), и он работал, но не для CJK.
  • Я сдался и вернулся в SimSun-ExtB.

(Примечание: у меня пока недостаточно репутации, чтобы публиковать ссылки).

4

Вы можете попробовать DejaVu Sans Mono - у меня это работает.

0

Это действительно больше комментарий, чем ответ, но так как SE не позволяет мне комментировать ...

Вы не предоставили достаточно информации. Юникод предоставляет более миллиона возможных символов, из которых более 100 000 были определены. (Остальные предназначены для тех случаев, когда мы связываемся с инопланетянами, или, более вероятно, для систем письма землян, которые еще не были закодированы.) Они разделены между около 150 сценариев: латинский, кириллица, арабский, китайский ... Ни один шрифт не будет содержать глифы (изображения символов) для всех этих символов. (Есть один или два, которые снабжают коробку с точкой кода внутри, но это не то, что вы хотите.)

Как уже было сказано два года назад, если вы получаете окно, в котором вы ожидаете один символ, то ваше приложение уже отображает Unicode (предположительно кодировку UTF-8 Unicode). Вам не хватает шрифта, который предоставляет глифы для любых сценариев, которые вы хотите отобразить. Если вы отображаете русский язык, вам нужен шрифт с кириллическими символами; если вы хотите отобразить китайский, то вам нужен шрифт с этими символами. (Большинство таких шрифтов также отображают латинские символы - тип, который мы используем для английского языка - но не обязательно симпатичный.)

Поэтому мой вопрос к вам: какой сценарий вы пытаетесь отобразить? Пока мы не знаем, все ответы будут угадывать.

Кстати, есть некоторые довольно сложные сценарии, и только некоторые программы будут отображать их правильно, даже если у вас есть правильный шрифт. Среди них бирманский, некоторые индийский алфавит (например, деванагари) и арабский (который написан справа налево и имеет символы, которые должны отображаться по-разному в зависимости от соседних символов).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .