Храмы Высота ЧБ Люди Вокзалы Парк Зима. Снег Саратов Сад-огород. Хлеба Грибы Лес Зима. Снег Цветы Живность Кошки Река Хлеба Лес Зима. Снег Новый Год Небо. Облака Радуга Курьезы Река Хлеба Лес Зима. Снег Небо. Облака Курьезы Астро Зима. Снег Новый Год Шарм Эль Шейх. Тропикана Гранд Азур Кошки Ящерица Йошкар-Ола. Казань. Чебоксары Гуамское ущелье Майкоп Грибы Зима. Снег Лошади Сад-огород. Зима. Снег Должанка Египет Люди Санкт-Петербург Санкт-Петербург Финляндия Финляндия Греция. Родос. Детский Сад 158 Новый Год Авто Мото Макро Карта Дети Питание Шарм Эль Шейх. Тропикана Гранд Азур Астро Набережная Петрозаводска Карелия. Путешествия. Весна Макро Карта Отдых Лыжные прогулки Стихи CentOS Oracle SAMBA GlassFish LAMP Motion EJabberd Postfix. Dovecot. Amavisd Perl Jabber VLC M3U Ubuntu
Обои для рабочего стола. Лучшее качество 1600x1200.
ДНЕВНИКИ


Назад >> Сергей ШИБКА >> CentOS


31.08.2012 CentOS 5.x и добавление локали cp1251

Возникла проблема при написание perl скрипта сортировки кириллических имён. А конкретно, если в именах встречается буква ё или Ё, эта буква встает первой и нарушается порядок сортировки.

Проверяем комнду в консоле:

locale

Видим  результат:

LANG=ru_RU.UTF-8
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=


Проверяем комнду в консоле:

locale -a | grep ru


Видим результат:

ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8


Отсутствует нужная нам локаль ru_RU.cp1251

Выполняем:

localedef -f CP1251 -i ru_RU /usr/lib/locale/ru_RU.cp1251

Должна появиться директория с набором файлов нашей локали.

Выполняем:

locale -a | grep ru


Получаем результат:

ru_RU
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8


Видим, что локаль ru_RU.cp1251 есть.

Теперь её можно подключить в perl скрипте:

use POSIX;
POSIX::setlocale (&POSIX::LC_ALL, "ru_RU.cp1251");
use locale; 


После чего волшебным образом сортировка заработала как хотелось :-)


P.S. Если захочеться, то можно и в консоли переключить с utf-8 на cp1251 (но это как кому удобно).

Выполняем:

export LANG=ru_RU.cp1251

Далее необходимо поправить файл /etc/sysconfig/i18n для выбора корректной локали:

Добавлем в него строчки для cp1251:

LANG="ru_RU.cp1251"
SUPPORTED="ru_RU.cp1251:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"

Для utf-8 закоментировать строчки:

LANG="ru_RU.UTF-8"
SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"

И перезапустить консоль.




комментарии (0)


[ Назад ]


© 2005 - 2024 * Сергей Шибка