Forum Webscript.Ru
Программирование => Perl => Тема начата: George S. от 04 Февраля 2005, 13:33:44
-
Как в скрипте выставить досовскую локаль (использую ActivePerl 5.8 Win) ?
use locale;
use POSIX \'locale_h\';
setlocale(LC_ALL,"ru_RU.cp1251");
$st=\'Как Найти тект\';
if ($st=~m/найти/i) {
print"Find!\\n";}
Данный скрипт работает для кодировки cp1251. Проблема - нужно работать с русским текстом в досовской кодировке. Вариант замены строки на нижний регистр работает, но хотелось бы обойтись без него.
-
George S.
Данный скрипт работает для кодировки cp1251
setlocale(LC_ALL,"ru_RU.cp1251");
Логично. Может поставить cp866 или 866???
-
Конечно я пробывал и cp866 и другие - но не помогает
-
George S.:
Конечно я пробывал и cp866 и другие
но при этом Вы и $st=\'Как Найти тект\'; набираете в DOS-кодировке, или делаете поиск в файле, в котором текст набран именно в DOS-кодировке?
-
AnnA
для кодировки cp1251 текст набран в win кодировке, для доса именно в досовской кодировке.
А если конкретно - то да, нужно искать строчки, читаемые из файла в досовской кодировке.
неужели единственный выход - переводить проверяемые строчки в нижний регистр - этонесколько неубодно..
-
George S. 12.3
http://isabase.philol.msu.ru/~apavel/ruperl/ru-perl-faq-12.html
-
NeoNox
Попробывал...
use locale;
use POSIX;
&POSIX::setlocale(&POSIX::LC_ALL, "Russian_Russia.866");
print uc "Да, здесь будут заглавные буквы";
Не работает как надо ... выдает:
Да, зде+¦ б+д+T заглабнTе б+кбT
Наверна у ActiveState Перл такой кривой -) .
-
setlocale (...) or die "this locale doesn\'t support"
-
&POSIX::setlocale(&POSIX::LC_ALL, "Russian_Russia.866") or die "this locale doesn\'t support"
-не выдает ошибок
-
тогда, может есть смысл один раз сконвертировать текст dos2win да и работать с ним?
а Вы не пробовали работу скрипта на хостере, т.е. под *nix - у меня такое раньше вот с ГД было ;) - локально под виндой шрифтов в упор не видит (не говоря уж о кодировке), а на сайте в сети всё замечательно работает.