Forum Webscript.Ru

Программирование => Perl => Тема начата: kosm от 10 Сентября 2003, 11:03:51

Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 11:03:51
Ребят, позвольте еще вопросик?
uc() не работает для unicod\'ов? Как можно поднять регистр для кирилицы?
СПАСИБО!
Название: uc() для кирилицы?
Отправлено: NeoNox от 10 Сентября 2003, 11:09:56
В FAQ лежит твой ответ
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 11:20:53
NeoNox
Сори за невнимательность.
СПАСИБО!
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 11:30:24
NeoNox
В FAQ нашел только это http://wiki.webscript.ru/PFRERegister (http://wiki.webscript.ru/PFRERegister)
Или ты имеешь ввиду, что стоит поискать какую нить либу на CPAN?
Название: uc() для кирилицы?
Отправлено: ondr от 10 Сентября 2003, 11:50:11
locale -a
nlsinfo
ls /usr/lib/nls/loc
ls /usr/lib/locale
ls /usr/lib/nls
ls /usr/share/locale

проверь данные команды. одна из них должна вывести список установленных у тебя локалей. если не найдешь нужную - добавь.

после этого в скрипте:
---------------------
....
use locale;
use POSIX qw/locale_h/;

setlocale(LC_CTYPE, "здесь впиши нужную локаль");
...
------------------------

ps: информация взята отсюда - perldoc perllocale
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 12:11:21
ondr
Это все что есть из ru...
--
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.ISO_8859-5
ru_RU.KOI8-R
ru_SU.CP1251
ru_SU.CP1251.old
ru_SU.CP866
ru_SU.ISO8859-5
ru_SU.ISO_8859-5
ru_SU.KOI8-R

Пробовал и CP1251 и KOI8-R -- uc() наоборот скидывает регистр :)
Название: uc() для кирилицы?
Отправлено: ondr от 10 Сентября 2003, 12:13:57
Цитировать
kosm:
Пробовал и CP1251 и KOI8-R -- uc() наоборот скидывает регистр


набери в терминале команду locale
что ты используешь?
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 12:18:45
ondr
Цитировать
bash: locale: command not found
Название: uc() для кирилицы?
Отправлено: ondr от 10 Сентября 2003, 12:57:00
небось freeBSD пользуешь? Там такой фичи "locale" и вправду нету.

тебе нужно выяснить, в какой кодировке ты сидишь. и что более важно, какую кодировку ты собираешься использовать в своих скриптах. как выяснишь, сделай как я описал, а лучше прочти perldoc perllocale.
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 13:03:34
ondr
Ага, у хостера фря стоит. Сейчас попробую выяснить про кодировку у их хелпдеска...
А кодировка у меня везде win1251 используется.

Спасибо!

PS: Пошел читать perldoc...
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 14:56:30
ondr
Они ответили, что установленная локаль - KOI8-R, и установка локали ru_RU.CP1251 у них невозможна. Но как вариант, могут перенести на другую площадку, где установлена 1251.
Вопрос. Если у них будет установлена консоль 1251, то
--
use locale;
use POSIX qw/locale_h/;
setlocale(LC_CTYPE, "ru_RU.CP1251");
--
меня спасет? Т.е. все дело было в том, что у них установлена KOI?
Название: uc() для кирилицы?
Отправлено: ondr от 10 Сентября 2003, 15:04:54
Цитировать
kosm:
Т.е. все дело было в том, что у них установлена KOI?


Нет. Все дело в том, что у них ИМХО(!) безграмотные админы, поскольку для решения проблемы необходимо и достаточно, всего лишь наличия файлика ru_RU.CP1251 (может по другому называться), в директории /usr/share/locale (это под freeBSD).

Если на новой площадке локаль установленна, то все будет нормально. С этим вообще никаких проблем не должно быть!
Название: uc() для кирилицы?
Отправлено: kosm от 10 Сентября 2003, 15:36:25
ondr
Дык есть он (файлик ru_RU.CP1251) в той директории. Я пробовал его подключать - никаких изменений. Мож чего не так отконфигурено?

А на новой площадке, с установленой win1251, никаких танцев с бубном уже не придеться делать? Т.е. uc() будет работать как и положено без:
--
use locale;
use POSIX qw/locale_h/;
setlocale(LC_CTYPE, "ru_RU.CP1251");
--
?

СПАСИБО ЕЩЕ РАЗ ЗА ПОМОЩЬ!