В 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-U – cons25u. Для 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.