UTF-8 в консоли

В FreeBSD 10 и выше юникод поддерживается из коробки

В /boot/loader.conf надо добавить строчку:

kern.vty=vt
/etc/login.conf:
russian-utf8|Russian UTF-8 Users Accounts:\
           :charset=UTF-8:\
           :lang=ru_RU.UTF-8:\
           :lc_all=ru_RU.UTF-8:\
           :tc=default:
# cap_mkdb /etc/login.conf
/etc/profile:
MM_CHARSET=UTF-8; export MM_CHARSET
# pw usermod Юзвер -L russian-utf8

Начиная с 9.0, для syscons(4) драйвера и очень важно – для vt(4) драйвера,
в /etc/ttys необходимо использовать тип эмулируемого терминала xterm:

#
ttyv0 "/usr/libexec/getty Pc" xterm on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" xterm on secure
ttyv2 "/usr/libexec/getty Pc" xterm on secure
ttyv3 "/usr/libexec/getty Pc" xterm on secure
ttyv4 "/usr/libexec/getty Pc" xterm on secure
ttyv5 "/usr/libexec/getty Pc" xterm on secure
ttyv6 "/usr/libexec/getty Pc" xterm on secure
ttyv7 "/usr/libexec/getty Pc" xterm on secure

Ранее, syscons(4), для KOI8-R тип эмулируемого терминала cons25r,
для KOI8-Ucons25u. Для CP437 (VGA default) – cons25, US-ASCII – cons25w.

Локализация login shells и использование login class.

Описан в FreeBSD HandBook и выполняется как обычно, локализация
login shell’ов и может быть использована совместно с настройкой login
class через описание его в /etc/login.conf

Локализация представляет из себя следующую конструкцию:

LanguageCode_CountryCode.Encoding

где:

LanguageCode_Country Code Description
 ----------------------------------------------------
 en_US English, United States
 ru_RU Russian, Russia

команда покажет все присутствующие в системе locale:

# locale -a | more

Работа с charater set (charset) для языков, например: – ISO8859-1, ISO8859-15, KOI8-R, CP1251, CP437 и тд и тп описана в multibyte(3), а список charsets для языков можно найти
в IANA Registry.

FreeBSD использует Xorg-compatible locale encodings.

1) использование login класса

– можно отредактировать /etc/login.conf и изменить настройки класса “russian
или создать отдельный класс russianu

a) изменяем класс russian /etc/login.conf
russian|Russian Users Accounts:\
      :charset=KOI8-R:\
      :lang=ru_RU.KOI8-R:\
      :tc=default:

на

russian|Russian Users Accounts:\
      :charset=UTF-8:\
      :lang=ru_RU.UTF-8:\
      :tc=default:

или

b) создаем в дополнение к классу “russian”, новый класс “russianu”
russianu|Russian Users Accounts UTF-8:\
       :charset=UTF-8:\
       :lang=ru_RU.UTF-8:\
       :tc=default:

По завершению перестраиваем хеш-базу:

# cap_mkdb /etc/login.conf

Все, осталось перевести пользователей которым нужен UTF-8 на новый класс
используя на выбор: passwd(1), pw(8), chpass(1), vipw(8)

2) настройка locale в shell/bash/csh/tcsh

для настройки локализации в шелах, необходимо соответствующим образом
настроить тот или иной shell, см. соответствующий man

Настройка локализации в login shell’ах сводится как минимум к заданию
переменных:

LANG
MM_CHARSET

в пользовательских файлах: ~/.login_conf и/или пользовательских стартап shell файлах: ~/.profile, ~/.bashrc, или ~/.cshrc.

sh/bash:
export LANG=ru_RU.UTF-8
export MM_CHARSET=UTF-8

Важно: в 10’ой ветке присутствует ошибка ввода UTF-8 в Bourne Shell, MFC из 11’ой ветки не было сделано:

Bug 196973 – sh(1) broken UTF-8 input

Примечание: в 11.x-RELEASE указанных выше проблем нет, в 10’ой ветке вместо /bin/sh можно установить bash.

csh/tsch:
setenv LANG ru_RU.UTF-8
setenv MM_CHARSET UTF-8

Или в системных стартап shell файлах: /etc/profile и /etc/csh.login.

http://unix1.jinr.ru/~lavr/vt/vtcons.html

https://www.lissyara.su/?id=2133

image_pdfimage_print

Leave a Reply

Your email address will not be published. Required fields are marked *