Автор Тема: Active State & русские буковки  (Прочитано 4382 раз)

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

Оффлайн Perlita

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Active State & русские буковки
« : 26 Октября 2002, 17:32:39 »
Установил Perl от AcTive State (5.6). Но почему-то в результатх работы скрипта русские буковки выводятся абра-кадаброй и проверки текстовые с русским текстом не работают.. Что же делать, помогите!!

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
Active State & русские буковки
« Ответ #1 : 26 Октября 2002, 20:54:15 »
А откуда эти буковки берутся? И куда они выводятся? Одно можно сказать точно - Перл НИКОГДА ничего не перекодирует сам. У него вообще нет никаких ограничений на то, что лежит в строковой переменной.

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Active State & русские буковки
« Ответ #2 : 27 Октября 2002, 00:59:51 »
проблема может быть с кодировками? набираем в Блокноте? тогда и коридировка виндовая, а отображается все в досовской. мб?
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн Perlita

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Active State & русские буковки
« Ответ #3 : 27 Октября 2002, 12:17:40 »
))) точно.. набрал в досовской кодировке скрипт

#! /usr/bin/perl
print"Русские буковки";

Отображается правильно. А что же делать если нужно работать с кодировкой koi8r или cp1251. Посмотрел документацию, там написано про локаль. Я так понял что в виндовсе 98 досовская локаль.. Как же ее можно сменить?

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
Active State & русские буковки
« Ответ #4 : 27 Октября 2002, 19:33:22 »
Что значит работать???? Перлу безразлично, в какой кодировке текст. Что есть, то он и выведет. Вопрос в том, сможет ли консоль отобразить этот текст правильно. Я, например, всегда работаю в 1251 и никаких проблем. Просто не вывожу русский текст в STDOUT. Если нужно, чтобы скрипт работал с консолью, тогда кто мешает весь текст писать в досовской кодировке? Если нужно брать текст из файлов в другой кодировке, кто мешает его перекодировать?

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

Оффлайн Perlita

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Active State & русские буковки
« Ответ #5 : 28 Октября 2002, 12:33:28 »
КшЫуфксрук:

У меня файл в кодировке cp1251 а перл работает в досовской кодировке, как же будут сравниваться прочтенная строчка из файла со русскими строками в скрипте?

open(FU, "< file_in_cp1251.txt");
while (!eof(FU)) {
 $st=;
 if ($st eq \'пушкин а.с.\') {... }
}
close(FU);

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Active State & русские буковки
« Ответ #6 : 28 Октября 2002, 13:59:08 »
Хозяйке на заметку.
Выдрано из утилиты http://www.pvdlab.net
# возращает перекодированную переменную, вызов wintokoi(<переменная>)
sub wintokoi {
    
my $pvdcoderwin=shift;
    
$pvdcoderwin=~ tr/\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF/\\xE1\\xE2\\xF7\\xE7\\xE4\\xE5\\xF6\\xFA\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF2\\xF3\\xF4\\xF5\\xE6\\xE8\\xE3\\xFE\\xFB\\xFD\\xFF\\xF9\\xF8\\xFC\\xE0\\xF1\\xC1\\xC2\\xD7\\xC7\\xC4\\xC5\\xD6\\xDA\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD2\\xD3\\xD4\\xD5\\xC6\\xC8\\xC3\\xDE\\xDB\\xDD\\xDF\\xD9\\xD8\\xDC\\xC0\\xD1/;
return 
$pvdcoderwin;
}

sub koitowin {
    
my $pvdcoderwin=shift;
    
$pvdcoderwin=~ tr/\\xE1\\xE2\\xF7\\xE7\\xE4\\xE5\\xF6\\xFA\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF2\\xF3\\xF4\\xF5\\xE6\\xE8\\xE3\\xFE\\xFB\\xFD\\xFF\\xF9\\xF8\\xFC\\xE0\\xF1\\xC1\\xC2\\xD7\\xC7\\xC4\\xC5\\xD6\\xDA\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD2\\xD3\\xD4\\xD5\\xC6\\xC8\\xC3\\xDE\\xDB\\xDD\\xDF\\xD9\\xD8\\xDC\\xC0\\xD1/\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF/;
return 
$pvdcoderwin;
}

# возращает перекодированную переменную, вызов wintoiso(<переменная>)
sub wintoiso {
    
my $pvdcoderiso=shift;
    
$pvdcoderiso=~ tr/\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF/\\xB0\\xB1\\xB2\\xB3\\xB4\\xB5\\xB6\\xB7\\xB8\\xB9\\xBA\\xBB\\xBC\\xBD\\xBE\\xBF\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF/;
return 
$pvdcoderiso;
}

sub isotowin {
    
my $pvdcoderiso=shift;
    
$pvdcoderiso=~ tr/\\xB0\\xB1\\xB2\\xB3\\xB4\\xB5\\xB6\\xB7\\xB8\\xB9\\xBA\\xBB\\xBC\\xBD\\xBE\\xBF\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF/\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF/;
return 
$pvdcoderiso;
}

# возращает перекодированную переменную, вызов wintodos(<переменная>)
sub wintodos {
    
my $pvdcoderdos=shift;
    
$pvdcoderdos=~ tr/\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF/\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9E\\x9F\\xA0\\xA1\\xA2\\xA3\\xA4\\xA5\\xA6\\xA7\\xA8\\xA9\\xAA\\xAB\\xAC\\xAD\\xAE\\xAF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF/;
return 
$pvdcoderdos;
}

sub dostowin {
    
my $pvdcoderdos=shift;
    
$pvdcoderdos=~ tr/\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9E\\x9F\\xA0\\xA1\\xA2\\xA3\\xA4\\xA5\\xA6\\xA7\\xA8\\xA9\\xAA\\xAB\\xAC\\xAD\\xAE\\xAF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF/\\xC0\\xC1\\xC2\\xC3\\xC4\\xC5\\xC6\\xC7\\xC8\\xC9\\xCA\\xCB\\xCC\\xCD\\xCE\\xCF\\xD0\\xD1\\xD2\\xD3\\xD4\\xD5\\xD6\\xD7\\xD8\\xD9\\xDA\\xDB\\xDC\\xDD\\xDE\\xDF\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF/;
return 
$pvdcoderdos;
}
The documentations is your friend

 

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