16

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

Я читал в обсуждении здесь, что установка программ, таких как jfbterm, и это работает, поэтому мне было интересно, если нет никакого способа для настройки (consolefonts?) терминал для правильной обработки Unicode без какого-либо дополнительного программного обеспечения.

На оконных терминалах (gnome-терминал, xterm и т.д.)

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

На виртуальном терминале:

Вермонт

На виртуальном терминале с jfbterm:

jbfterm

Кто-нибудь знает, возможно ли сделать то же самое только с помощью vt по умолчанию?

Спасибо,

(ОБНОВИТЬ)

@BasileStarynkevitch: вот скриншот локали

место действия

@ mr.spuratic: здесь вывод showconsolefont

showconsolefont

3 ответа3

4

Консольный шрифт может загружать до 512 (я думаю, или что-то в этом роде) разных символов; обычно только 256 однако.

для отображения латинского, кириллического или других языков, которые используют менее 200 не сложных символов, нет проблем.

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

Обратите внимание, что если ограничение 512 должно быть достаточно для ascii и обоих наборов кана, существует проблема ширины. CJK и кана соответствуют квадрату, они в два раза шире латинских букв. Это не то, что консоль может обрабатывать из коробки.

Вы можете вернуться к старой и уродливой "половинной ширине катаканы" (и, возможно, даже найти старый шрифт для такой вещи), или установить консоль на ширину 40 столбцов, и латинские буквы будут такими же широкими, как и кана.

Я не знаю ни одного такого шрифта консоли с кана; Вы должны нарисовать свой собственный (есть инструменты для этого, и вы можете просто скопировать точки растрового японского шрифта).

Также вы можете использовать iconv для транслитерации kana в ascii:

2

Вам нужен шрифт, который на самом деле имеет эти символы. Например, Arch Linux рекомендует Lat2-Terminus16 .

Чтобы попробовать это, просто введите следующую команду в виртуальной консоли: setfont Lat2-Terminus16 .

В остальном, большинство современных дистрибутивов уже поддерживают его «из коробки».

1

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

Некоторые дистрибутивы Linux предоставляют unicode_start и unicode_stop для автоматизации этого.

Если less вызывает проблемы, может потребоваться установить переменную окружения LESSCHARSET (или сбросить, если она неправильная).

Часто задаваемые вопросы Маркуса Куна о UTF-8 и Unicode для Unix/Linux неоценимы.

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