UTF8 символы в Windows 10 Bash Terminal

36

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

Ortix92
источник
5
Если каждый символ отображается как один квадратный блок, то UTF-8 уже работает; это шрифт, который не поддерживает Unicode.
Гравитация
используйте, chcp 65001чтобы изменить кодовую страницу на UTF-8 и изменить шрифт на Consolas
phuclv
Я переключился на SimSun-Ext Bшрифт, и все символы отображаются правильно.
Райан Фоли
5
@ Grawity Я использовал Uubntu Mono и теперь переключился на консолей. Вместо пустой квадратной коробки я получаю квадратную коробку с вопросительным знаком внутри. Я также попробовал предложение chcp, но оно уже настроено на кодировку UTF-8, когда я проверял свойства.
Ortix92
2
Я хотел бы отметить, что эта проблема до сих пор не решена и что я все еще не могу правильно отображать символы Unicode
UTF8,

Ответы:

12

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

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

DoctorJ
источник
Это верный ответ. Вы можете выбрать любой шрифт, поддерживающий UTF8. Я установил Menlo, а потом забыл изменить его в настройках bash, честно говоря, даже не думал об этом.
StalkAlex
Обратите внимание, что я попробовал все параметры по умолчанию в Windows (включая Source Code Pro), и символ галочки (✔) работал только для меня со шрифтом «DejaVu Sans Mono», предложенным @ user3599934!
Севрон
10

Чтобы добавить к ответу 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.

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

Джошуа Матиас
источник
6

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

user3599934
источник
11
Хотя это может быть решением проблемы ОП, это скорее подсказка, чем качественный ответ. Это можно улучшить, дав инструкции: 1) как изменить шрифт для терминала Windows 10 Bash; 2) как установить указанный шрифт (если он не установлен в каждой Windows 10 по умолчанию - я на Linux, я не знаю).
Камиль Мачоровски
1
Я использовал Ubuntu Mono раньше и у меня были проблемы с ним. DejaVu Sans Mono решил проблему.
smonff
0

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

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

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

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

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

Майк Максвелл
источник