Автор Тема: setlocale (LS_ALL, <DOS Russian>) КАК?  (Прочитано 5795 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн George S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« : 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. Проблема - нужно работать с русским текстом в досовской кодировке. Вариант замены строки на нижний регистр работает, но хотелось бы обойтись без него.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #1 : 04 Февраля 2005, 13:41:50 »
George S.
Цитировать
Данный скрипт работает для кодировки cp1251

Цитировать
setlocale(LC_ALL,"ru_RU.cp1251");


Логично. Может поставить cp866 или 866???

Оффлайн George S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #2 : 04 Февраля 2005, 13:53:47 »
Конечно я пробывал и cp866 и другие - но не помогает

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #3 : 04 Февраля 2005, 15:18:45 »
Цитировать
George S.:
Конечно я пробывал и cp866 и другие

но при этом Вы и $st=\'Как Найти тект\'; набираете в DOS-кодировке, или делаете поиск в файле, в котором текст набран именно в DOS-кодировке?
пока-пока. :)

Оффлайн George S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #4 : 06 Февраля 2005, 00:14:27 »
AnnA
для кодировки cp1251 текст набран в win кодировке, для доса именно в досовской кодировке.
А если конкретно - то да, нужно искать строчки, читаемые из файла в досовской кодировке.

неужели единственный выход - переводить проверяемые строчки в нижний регистр - этонесколько неубодно..

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #5 : 06 Февраля 2005, 21:05:11 »
The documentations is your friend

Оффлайн George S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #6 : 07 Февраля 2005, 10:25:34 »
NeoNox
 Попробывал...


use locale;
  use POSIX;
  &POSIX::setlocale(&POSIX::LC_ALL, "Russian_Russia.866");
  print uc "Да, здесь будут заглавные буквы";


Не работает как надо ... выдает:

Да, зде+¦ б+д+T заглабнTе б+кбT


Наверна у ActiveState Перл такой кривой -) .

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #7 : 07 Февраля 2005, 11:32:58 »
setlocale (...) or die "this locale doesn\'t support"

Оффлайн George S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #8 : 08 Февраля 2005, 10:21:28 »
&POSIX::setlocale(&POSIX::LC_ALL, "Russian_Russia.866") or die "this locale doesn\'t support"

-не выдает ошибок

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
setlocale (LS_ALL, <DOS Russian>) КАК?
« Ответ #9 : 11 Февраля 2005, 12:09:07 »
тогда, может есть смысл один раз сконвертировать текст dos2win да и работать с ним?
а Вы не пробовали работу скрипта на хостере, т.е. под *nix - у меня такое раньше вот с ГД было ;) - локально под виндой шрифтов в упор не видит (не говоря уж о кодировке), а на сайте в сети всё замечательно работает.
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28