Forum Webscript.Ru

Программирование => Perl => Тема начата: /IE][A от 02 Декабря 2003, 11:30:10

Название: uc в винде
Отправлено: /IE][A от 02 Декабря 2003, 11:30:10
Привет !!!

Столкнулся с проблемой перевода букв в верхний регистр под виндой.

При выводе на экран (через консоль) все пишется нормально, при применении регекспов и функций работы со строками, строки остаются без изменений.

Регулярные выражения тоже работают не совсем нормально, т.е. если текст набран маленькими буквами, тогда разбирается, если присутствуют большие не обрабатывается, хотя обработка идет бещ учета регистра.

Текст набирается в 866 кидоровке.

При применениях locale вообще лажа получается.
Пробовал всякие комбинации локали (Russian, Russian.CP1251, Russian.koi8r).
Название: uc Б БХМДЕ (CP866)
Отправлено: ondr от 02 Декабря 2003, 11:49:52
Цитировать
Пробовал всякие комбинации локали

Пробуй еще. Читай маны. Ты на верном пути.
Название: uc Б БХМДЕ (CP866)
Отправлено: /IE][A от 02 Декабря 2003, 12:03:04
Может подскажешь какие именно читать :) ?
Название: uc Б БХМДЕ (CP866)
Отправлено: ondr от 02 Декабря 2003, 12:12:09
Ну собственно perldoc perllocale
А также загляни сюда http://forums.webscript.ru/showthread.php?s=&postid=93559
Плюс поиск далее по форуму.
Название: uc Б БХМДЕ (CP866)
Отправлено: /IE][A от 02 Декабря 2003, 12:17:50
при изменении локали (использовал разные), результат один и тот-же.
Название: uc Б БХМДЕ (CP866)
Отправлено: ondr от 02 Декабря 2003, 12:29:58
Попробуй
print setlocale(LC_CTYPE, \'rus_RUS\');
Что напишет?
Название: uc Б БХМДЕ (CP866)
Отправлено: /IE][A от 02 Декабря 2003, 12:36:12
Пишет Russian_Russia.CP1251.
Название: uc Б БХМДЕ (CP866)
Отправлено: /IE][A от 02 Декабря 2003, 12:37:58
меняю на кои (Russian.koi8r), все равно пишет 1251.
Название: uc Б БХМДЕ (CP866)
Отправлено: AliMamed от 02 Декабря 2003, 12:47:55
Цитировать
/IE][A:
меняю на кои (Russian.koi8r),

значит она не установлена (по крайней мере под этим именем)
только я не понял зачем, если текст в кодировке 866, устанавливать koi8r или win1251
Название: uc Б БХМДЕ (CP866)
Отправлено: ondr от 02 Декабря 2003, 12:49:04
/IE][A
Эээ... А, что же тебя не устраивает?
Название: uc Б БХМДЕ (CP866)
Отправлено: /IE][A от 02 Декабря 2003, 12:49:47
ДЛя пробы, проверить работает вообще или нет.
Тогда как 866 именуется (CP866 или еще как-то.), просто с 866 кодировкой не случалось работать
Название: uc Б БХМДЕ (CP866)
Отправлено: /IE][A от 03 Декабря 2003, 08:09:24
Специально для тех кто столкнется с этой проблемой в Винде.

Цитировать

use locale;
use POSIX qw(locale_h);

BEGIN {
   setlocale(LC_ALL, "Russian_Russia.866");
}