Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: Перекодировка кириллического текста (win/koi/iso/utf)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

jjj



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я в перле полный ноль. Но есть такая задачка - cgi скрипт, кроме других функций, еще и почту отсылает с сообщением. Всё работает в кодировке вин. Но необходимо, чтоб именно почтовые сообщения отправлялись в koi. Наверняка есть такая функция в перл. Подскажите, плиз!




Исправил название на более общее. — Svarga.

Всего записей: 35 | Зарегистр. 08-10-2001 | Отправлено: 02:20 21-02-2002 | Исправлено: Svarga, 05:59 02-10-2003
AiK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой функции нет. Её надо либо самому писать, либо заимствовать
А ещё лучше не перекодировывать, а указывать в хидере кодировку, в которой отправляешь письмо. Все приличные почтовики-затейники перекодируют не хуже, чем это сделаешь ты сам.

----------
Developing.ru

Всего записей: 484 | Зарегистр. 03-01-2002 | Отправлено: 12:12 21-02-2002
xRat



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня та же проблема... Письма надо обязательно слать уже в КОИ. Подскажите плз где такую функцию позаимствовать...
Заранее благодарю...

----------
Нету у меня мании величия. Ее вообще не бывает у великих... ;))
Поддержим отечественного производителя...

Всего записей: 884 | Зарегистр. 22-10-2001 | Отправлено: 16:15 15-04-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jjj
Придется все же перл изучить. Вот скрипт, но его нужно обработать, чтобы вставить в свой скрипт.
http://www.mashke.org/Conv/cyr-conv.html

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:28 15-04-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
тоже возникла такая проблема - выбор кодировки письма (юзерам).
 
AiK

Цитата:
А ещё лучше не перекодировывать, а указывать в хидере кодировку, в которой отправляешь письмо. Все приличные почтовики-затейники перекодируют не хуже, чем это сделаешь ты сам.

ага, ну-ну.
приличные почтовики просто выставят, что это письмо в кои8 допустим... но перекодировкой текста они не занимаются.

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 23:11 14-07-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik
Обязательно в перле?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:16 14-07-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
мне? да.
я вот кстати начал ковырять скриптец. Брр, сложноват он как-то.
че-то толком въехать не могу:

Цитата:
while (<DATA>) {
    /^\d/ && do {
@data = split;
for $j (0..$ncods-1) {
   $chars{$intos[$j]} = join '', $chars{$intos[$j]}, chr($data[$j]);
   $latin{chr($data[$0])} = $data[$ncods];
   }
    }
}
 

просто у меня какая фишка - есть в $var текст. Собсно, надо перекодировать этим скриптом. Начал переделывать - вместо STDIN...
но вот че за /^\d/ && do {
}
?
как я прочитал, do сначала проверяет условие, перед тем как начать использовать цикл.
Ну, вообщем я такое никогда не использовал (какие-то /^\d/ && do).
Потом я толком въехать не могу в for $j (0..$ncods-1) {}

Цитата:
 
@intos = qw/k a w m i l/;
 
$ncods = @intos - 1;  #  last = Latin, treated separately
 

Ну и? Имеем $ncods = 5. И че с того? 5 раз делаем
$chars{$intos[$j]} = join '', $chars{$intos[$j]}, chr($data[$j]);
собсно, эта строка тоже какая-то...
 
вообщем, кто поможет в этом разобраться?  
зы. еще "@data = split;"
это он че, из $_ сплитит строки в массив что ли? ну ладно, это понятно вроде бы
а вот дальше

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 00:54 15-07-2003
DStream

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shurik

Цитата:
/^\d/ && do {  
}  

проверять на нецифру, если первое условие истинно делать do{}
 

Цитата:
for $j (0..$ncods-1) {}  

типа for $j = 0 to $ncods-1 step 1
 

Всего записей: 605 | Зарегистр. 03-05-2003 | Отправлено: 08:04 15-07-2003 | Исправлено: DStream, 08:05 15-07-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DStream

Цитата:
типа for $j = 0 to $ncods-1 step 1  


как работает for я прекрасно знаю... я не понимаю СМЫСЛА.
вообщем, у меня не получается получить "$chars{$intos[$j]}", ибо не работает "chr($data[$j])", т.к. функции chr нужно число, а $data[$j] у меня никак числом не получается...
что вообще из себя тогда представляет массив @data ?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 11:13 15-07-2003
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery а зачем такие сложности ? Ты хотел универсальный скрипт предложить, вероятно
 
sub Win2Koi {
    my($str)=@_;
    $str=~ tr/тут_символы_в_win/тут_символы_в_кои/;
    return $str;
}
   
Попроще (правда очень прямолинейно)

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 21:27 15-07-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
woffer
ну и где перекодировка? должна быть некая таблица все же.

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 00:46 16-07-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik

Цитата:
ну и где перекодировка? должна быть некая таблица все же.

Вот тут ) Вгоняешь символы.. в прямом соответствии

Цитата:
$str=~ tr/тут_символы_в_win/тут_символы_в_кои/;  

 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:52 16-07-2003
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
$text =~ tr/ИЖСЙЕМЦЬЫГУЗТШБЮОПНКДФЩЪВЯЛХРЭАЧижсйемцьыгузтшбюопнкдфщъвялхрэач/йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/;

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 09:44 16-07-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Infection
это из win в koi?
тогда че за замута там была (скрипт)?
какой-то навороченный больно.
 
Добавлено
Infection
что-то не пашет эта строчка...
может, как бы из-за форума?..

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 14:29 16-07-2003
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shurikда... это из win в koi
 
строка из скрипта, который делает рассылку новостей
 
должна работать..
может ты как нить не так ее применяешь?  

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 16:09 17-07-2003
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Infection слушай, а не сбилась перекодировка при отображении ?

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 22:27 17-07-2003
Costezzo



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А так можно?
 
use Encoding;
 
from_to($string, "cp1251", "koi-8r");

Всего записей: 10 | Зарегистр. 12-02-2003 | Отправлено: 15:43 18-07-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Infection
все рульно пашет
 
Costezzo
а это стандартная библиотека?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 22:07 20-07-2003
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вот так вот еще мона
================================
use Text::Iconv;
my $converter = Text::Iconv->new( "cp1251","koi8-r");
my $text = $converter->convert("Привет");
================================
 
вот так вот еще мона, тока не знаю точна, входит ли этот пакет в стандартный перл

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 10:33 21-07-2003
Costezzo



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а это стандартная библиотека?

 
Не "Encoding", а "Encode", извините... Есть не у всех провайдеров (у моего есть), но если попросить -- обычно ставят.

Всего записей: 10 | Зарегистр. 12-02-2003 | Отправлено: 14:51 25-07-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: Перекодировка кириллического текста (win/koi/iso/utf)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru