Символи UTF8 у терміналі Windows 10 bash


36

Я встановив нову оболонку bash на Windows 10. Я використовую її разом із ZSH. Однак жоден з символів utf8 не працює, вони виглядають як квадратні блоки. Як увімкнути кодування символів utf8 в оболонці за замовчуванням? Це можливо?


5
Якщо кожен символ відображається як один квадратний блок, то UTF-8 вже працює; це шрифт, якому не вистачає підтримки Unicode.
grawity

використовувати, chcp 65001щоб змінити кодову сторінку на UTF-8 та змінити шрифт на Consolas
phuclv

Я перейшов на SimSun-Ext Bшрифт, і всі символи відображаються правильно.
Райан Фолі

5
@grawity Я використовував uubntu mono і тепер перейшов на консолі. Замість порожньої квадратної коробки я отримую квадратну коробку із знаком питання всередині. Я також спробував пропозицію chcp, але вона вже встановлена ​​на кодування UTF-8, коли я перевірив властивості.
Ortix92

2
Я хотів би зазначити, що ця проблема все ще не вирішена і що я все ще не можу правильно відобразити символи
uncode

Відповіді:


12

Клацніть правою кнопкою миші на заголовку вгорі вікна bash, виберіть властивості введення. У вікні, що відкривається, є вкладка, на якій можна змінити шрифт. Я змінив шрифт на "Source Code Pro" і розмір 14.

Виглядає добре, і всі символи utf-8 працюють.


Це правдива відповідь. Ви можете вибрати шрифт, що вам подобається, що підтримує UTF8. Я встановив Menlo, а потім забув змінити його в баш-опціях, чесно навіть не думав про це.
StalkAlex

Зауважте, що я спробував усі параметри за замовчуванням у Windows (включаючи Source Code Pro) та символ галочки (✔) працював для мене лише зі шрифтом "DejaVu Sans Mono", запропонованим @ user3599934!
Севрон

10

Щоб додати відповідь Doctorj, є кілька шрифтів, які встановлені за замовчуванням, які ви можете використовувати (у Windows 10 bash shell).

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

Наступні шрифти за замовчуванням відображають усі спостережувані символи:

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

І MS Gothic, і NSimSun

  • Розміщує не латинські мови (не китайські, японські, корейські) мови (македонська, казахська, болгарська).
  • Має непарне вертикальне зміщення наголошених латинських символів (á, é).
  • Не відображав хоча б одного символу Македонії.

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 див. Це питання та відповіді.

  • Я спробував встановити "Source Code Pro", але він не з'явився у шрифтах для мене.
  • Я встановив DejaVu Sans Mono, і він працює на більшості мов, але зовсім не працює для CJK.
  • Я встановив Google Monopace шрифт Noto, і він працював, але не для CJK. Крім того, вони спеціально кажуть, що вони не мають монопростірної підтримки для CJK.
  • Я встановив Google Inconsolata, і спробувати це не варто.
  • Я встановив GNU FreeFont (FreeMono), і він працював, але не для CJK.
  • Я здався і повернувся до SimSun-ExtB.

(Примітка. У мене ще недостатньо репутації для публікації посилань).


6

Ви можете спробувати DejaVu Sans Mono - це працює для мене.


11
Хоча це може бути вирішенням проблеми ОП, це скоріше натяк, ніж відповідь високої якості. Це можна покращити, даючи вказівки щодо: 1) як змінити шрифт для терміналу Windows 10 Bash; 2) як встановити згаданий шрифт (якщо він за замовчуванням не є в кожній Windows 10 - я в Linux, не знаю).
Каміль Маціоровський

1
Раніше я використовував Ubuntu Mono і в мене була проблема. DejaVu Sans Mono вирішив це питання.
smonff

0

Це справді більше коментаря, ніж відповіді, але оскільки SE не дозволяє мені коментувати ...

Ви не надали достатньо інформації. Unicode надає понад мільйон можливих символів, з яких визначено понад 100 000. (Решта - це тоді, коли ми контактуємо з інопланетянами або, швидше за все, з письменницькими системами Землі, які ще не були закодовані.) Вони розділені між приблизно 150 скриптами: латинська, кирилиця, арабська, китайська ... Жоден шрифт не збирається надати гліфи (зображення символів) для всіх цих символів. (Є один або два, які постачають коробку з кодовою точкою всередині, але це не те, що ви хочете.)

Як говорив grawity понад два роки тому, якщо ви отримуєте поле, де ви очікуєте одного символу, то у вашій програмі вже відображається Unicode (імовірно, кодування UTF-8 Unicode). Вам не вистачає шрифту, який забезпечує гліфи для будь-яких сценаріїв, які ви хочете показати. Якщо ви відображаєте російську мову, ви хочете, щоб шрифт з кирилицями; якщо ви хочете відображати китайську мову, вам потрібен шрифт з цими символами. (Більшість таких шрифтів також відображатимуть латинські символи - такий, який ми використовуємо для англійської мови, - але не обов'язково досить.)

Тож моє запитання до вас таке: який сценарій ви намагаєтеся відобразити? Поки ми не знаємо про це, всі відповіді будуть здогадами.

До речі, є декілька складних сценаріїв, і лише деякі програми відображають їх правильно, навіть якщо у вас є правильний шрифт. Серед них бірманські, деякі індіанські сценарії (наприклад, Devanagari) та арабська (яка написана справа наліво та має символи, які повинні відображатися по-різному залежно від суміжних символів).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.