Настройка русской локали и кодовой страницы UTF-8 в консоли Gentoo

Логотип GentooПонадобилось мне тут ощутить все прелести настоящего Unix-ящика через SSH на хостинге. На самом деле вещь достаточно интересная и, можно сказать, даже полезная, ибо Web-интерфейс RoundCube хоть и достаточно не плох, но не без изъянов. Но сегодня речь пойдёт не об этом. Подключившись через родную для Linux утилиту ssh понял, что совсем всё просто не будет, ибо стандартная кодовая страница в терминале Ubuntu — это UTF-8, а на сервере хостинга установлена кодировка cp1251, соотсветственно вся литиница просто не отображалась, а работать с письмами на родном русском, как ни странно приходится постоянно :-) .

Первым делом смотрю locale:

user@gentoo:-$ locale

LANG=
LC_CTYPE=ru_RU.cp1251
LC_NUMERIC=»POSIX»
LC_TIME=»POSIX»
LC_COLLATE=»POSIX»
LC_MONETARY=»POSIX»
LC_MESSAGES=»POSIX»
LC_PAPER=»POSIX»
LC_NAME=»POSIX»
LC_ADDRESS=»POSIX»
LC_TELEPHONE=»POSIX»
LC_MEASUREMENT=»POSIX»
LC_IDENTIFICATION=»POSIX»
LC_ALL=

Как видим, русская локаль и кодировка cp1251. Не гуд. Стучу в службу поддержки. Там посоветовали в ~/.bashrc добавить строчку:

export LANG=ru_RU.UTF-8

Добавил. Пробую, то же самое, русские символы всё равно выводятся в кодировке cp1251. Вывод locale зато изменился:

LANG=»ru_RU.UTF-8″
LC_CTYPE=»ru_RU.cp1251″
LC_NUMERIC=»ru_RU.UTF-8″
LC_TIME=»ru_RU.UTF-8″
LC_COLLATE=»ru_RU.UTF-8″
LC_MONETARY=»ru_RU.UTF-8″
LC_MESSAGES=»ru_RU.UTF-8″
LC_PAPER=»ru_RU.UTF-8″
LC_NAME=»ru_RU.UTF-8″
LC_ADDRESS=»ru_RU.UTF-8″
LC_TELEPHONE=»ru_RU.UTF-8″
LC_MEASUREMENT=»ru_RU.UTF-8″
LC_IDENTIFICATION=»ru_RU.UTF-8″
LC_ALL=

Чтож, уже не плохо, но не то. Пошёл гуглить. На различных форумах и how-to проблема решается изменением файла /etc/env.d/02locale, но доступа за пределы домашней директории у меня естественно нет. Выход оказался достаточно простым и находился в официальной документации Gentoo. Вместо переменно LANG в файле ~/.bashrc просто необходимо было использовать переменную LC_ALL:

user@gentoo:-$ nano .bashrc

***в конец файла***

export LC_ALL=»ru_RU.UTF-8″

После этого всё стало нормально. И на этот раз вывод locale был таким:

LANG=
LC_CTYPE=»ru_RU.UTF-8″
LC_NUMERIC=»ru_RU.UTF-8″
LC_TIME=»ru_RU.UTF-8″
LC_COLLATE=»ru_RU.UTF-8″
LC_MONETARY=»ru_RU.UTF-8″
LC_MESSAGES=»ru_RU.UTF-8″
LC_PAPER=»ru_RU.UTF-8″
LC_NAME=»ru_RU.UTF-8″
LC_ADDRESS=»ru_RU.UTF-8″
LC_TELEPHONE=»ru_RU.UTF-8″
LC_MEASUREMENT=»ru_RU.UTF-8″
LC_IDENTIFICATION=»ru_RU.UTF-8″
LC_ALL=ru_RU.UTF-8

Да, после изменения файла ~/.bashrc для применения новый настроек необходимо перелогиниться по SSH.

Вообще, если честно не понятно чем был обусловен выбор кодовой страницы cp1251 (родная для Windows, другое название Windows-1251) на Linux-хостинге, но тем не менее. В общем проблема решена.

Теги: , ,

Вторник, 16 Июн 2009 ЧаВО

Комментариев пока нет.

Ваш отзыв

Поиск