Як відобразити Unicode у віртуальному терміналі Linux?


19

Читання будь-яких даних у Unicode не відображається належним чином у терміналі Linux (тобто віртуальний термінал, який відкривається без вікон X).

У дискусії я прочитав, що встановлення таких програм, як JFBTERM , і це спрацює, тому мені було цікаво, чи немає способу налаштувати (консолі?) Термінал, щоб правильно обробляти unicode без зайвого програмного забезпечення.

У терміналах Windows (gnome-terminal, xterm тощо) це виглядає приблизно так:

гном-термінал

На віртуальному терміналі це виглядає приблизно так:

vt

На віртуальному терміналі з JFBTERM це виглядає приблизно так:

jbfterm

Ось скріншот результатів locale:

локал

Ось результат showconsolefont:

showconsolefont

Хтось знає, чи можна виконати те саме за допомогою віртуального терміналу за замовчуванням?

Відповіді:


5

Шрифт консолі може завантажувати шрифти до 512 (я думаю, чи щось подібне) різних гліфів; як правило, лише 256 гліфів.

Відображення латинської, кириличної та інших мов, які використовують менше 200 не складних символів, не є проблемою.

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

Зауважте, що якщо межа 512 повинен бути достатнім для ASCII і обох наборів Kana, виникає проблема ширини.

CJK і Kana підходять до квадрата, вони вдвічі ширші латинських літер. Це не те, що консоль може обробляти поза коробкою.

Ви можете вдатися до старовинної та потворної "Напівшироти Катакани" (а може навіть знайти старий шрифт такої речі), або встановити консоль шириною 40 стовпців, а латинські літери будуть такими ж широкими, як Кана.

Я не знаю жодного такого шрифту консолі з Kana; ви повинні намалювати свій власний (для цього є інструменти, і ви можете просто скопіювати точки растрового японського шрифту.

Крім того, ви можете використовувати iconvдля транслітерації кана в ASCII.


3

Вам потрібен шрифт, який насправді має ці символи. Наприклад, рекомендує Arch Linux Lat2-Terminus16.

Для того, щоб спробувати, просто введіть наступну команду в віртуальної консолі: setfont Lat2-Terminus16.

Щодо решти, то більшість сучасних дистрибутивів вже підтримують його поза межами.


2

Окрім цього LANG/LC_ALL, stty iutf8потрібно сказати терміналу, що робити, можливо, вам знадобиться setfontзавантажити корисний шрифт та відображення. Якщо у вас все ще виникають проблеми, перевірте налаштування ядра на встановлення CONFIG_NLS_xxпараметрів, можливо, вам знадобиться, modprobe nls_utf8якщо воно не завантажується автоматично (я думаю, це потрібно лише для імен файлів Unicode).

Деякі дистрибутиви Linux надають unicode_startта unicode_stopсценарії для автоматизації цього.

Якщо це lessвикликає проблеми, можливо, знадобиться встановити змінну середовища LESSCHARSET(або зняти її, якщо вона неправильна).

UTF-8 та поширені запитання UTF-8 Маркуса Куна для Unix / Linux є неоціненними.

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