FreeBSD - UTF8

Опубликовано

В FreeBSD 11.2 достаточно вписать в rc.conf значение keymap="ru" и указать пользователю класс russian, после чего UTF-8 нормально работает и отображается в консоли vt.

Однако в FreeBSD до 11 версии нет полноценной поддержки UTF-8 в консоли. В принципе особой необходимости в поддержке UTF-8 в текстовой консоли нет, поэтому можно в консоли продолжать использовать KOI8-R, а при запуске иксов переключаться в UTF-8. Проблему работы с UTF-8 именами файлов в текстовой консоли вполне можно решать при помощи mc, который очень удобно работает с перекодировками.

В случае если версия FreeBSD ниже 11, имеется несколько методов использования UTF-8:

Метод 1 - в текстовой консоли KOI8-R , в графическом интерфейсе X - UTF-8

Данный метод работает просто. В файл ~/.xinitrc, перед запуском оконного менеджера следует добавить такие строки:

export LANG='ru_RU.UTF-8'
export LC_ALL='ru_RU.UTF-8'

В этом случае после выполнения команды startx получится что локаль будет UTF-8:

$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8

И собственно вот и весь переход. После чего все что делается в графическом интерфейсе - уже работает в UTF-8.

Метод 2 - локаль UTF-8 как в текстовой консоли, так и в графическом интерфейсе X

Этот метод следует использовать только в том случае, если обязательно требуется UTF-8 в качестве постоянной локали как в графическом интерфейсе X, так и в текстовой консоли, в любом другом случае достаточно первого метода. В данном же варианте нам придется создать новый класс, в котором будет описана локаль ru_RU.UTF-8 для пользователя. Для этого нам следует отредактировать /etc/login.conf, найти там класс russian:

#
# Russian Users Accounts. Setup proper environment variables.
#
russian|Russian Users Accounts:\
           :charset=KOI8-R:\
           :lang=ru_RU.KOI8-R:\
           :tc=default:

По аналогии добавить еще один класс уже с UTF-8.

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

Чтобы изменения классов были занесены в базу данных, следует выполнить команду:

# cap_mkdb /etc/login.conf

Чтобы UTF-8 был доступен пользователю следует из под пользователя root выполнить команду:

# pw usermod ИМЯ_ПОЛЬЗОВАТЕЛЯ -L russian_utf8

И у пользователя будет установлена локаль UTF-8. В графическом интерфейсе X будет все нормально, но в текстовой консоли работать с русскими именами файлов и просто с русским текстом будет невозможно, т.е. русские знаки будут отображаться в текстовой консоли некорректно.

[Наверх страницы]