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

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

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

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

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

Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cr4k3r
Спасибо!
 
А теперь нужен обратный процесс: из win-1251 в utf-8.

----------
Intellect Board | Miranda Gram Pack

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 22:59 20-11-2005
SiMM

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

Цитата:
А теперь нужен обратный процесс
А головой уже думали?

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 00:08 21-11-2005
Gram



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

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 08:26 21-11-2005
SiMM

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

Цитата:
Думали
Ну если думали, то почему не сделали по аналогии?

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 09:56 21-11-2005
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM, ну вариант со сменой @hash{@utf8}=@win; на @hash{@win}=@utf8; не прокатывает...

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 10:10 21-11-2005
SiMM

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

Цитата:
не прокатывает
Нет желания Perl вспоминать. Думаю, перевести код с PHP труда не составит
http://phpclub.ru/faq/encodings/encodings3
А вообще в Perl'е, как и в PHP, если мне не изменяет память, был iconv

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 13:29 21-11-2005 | Исправлено: SiMM, 13:29 21-11-2005
Evialroot

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. В Perl и программировании я  вообще полный ноль, поэтому очень нужна помощь.
Проблема в том, что сообщения приходят на почтовый ящик в нечитаемом виде (а точнее в koi-8). Если кто знает как решить эту проблему, напишите пожалуйста исправленный код скрипта полностью. Заранее спасибо
 
 
#Программа SENDMAIL
$mailprog = '/usr/sbin/sendmail';
###############################################
use CGI::Carp qw (fatalsToBrowser);
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 
@pairs = split(/&/, $buffer);
 
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s/<!--(.|\n)*-->//g;
$name =~ s/<([^>]|\n)*>//g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value;
}
 
 
$subject = $FORM{subject};
$to = $FORM{to};
$from = $FORM{from};
$followupurl = $FORM{followupurl};
 
# Open the mail program
open(MAIL,"|$mailprog -t");
 
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n";
print MAIL "\n";
print MAIL "---------------------------------------------------------------------\n";
 
foreach $key (keys(%FORM)) {
if ($key ne "subject" && $key ne "to" && $key ne "from" && $key ne "followupurl") {
print MAIL "$key: $FORM{$key}\n";
}
}
 
print MAIL "---------------------------------------------------------------------\n";
 
close(MAIL);
 
print "Location: $followupurl\n\n";
 
Добавлено:
Проблема решена. Добрые люди помогли Код был исправлен на такой вид:
 
se CGI::Carp qw (fatalsToBrowser);
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 
@pairs = split(/&/, $buffer);
 
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $name =~ tr/+/ /;
   $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $name =~ s/<!--(.|\n)*-->//g;
   $name =~ s/<([^>]|\n)*>//g;
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s/<!--(.|\n)*-->//g;
   $value =~ s/<([^>]|\n)*>//g;
   $FORM{$name} = $value;
}
 
 
$subject = $FORM{subject};
$to = $FORM{to};
$from = $FORM{from};
$followupurl = $FORM{followupurl};
 
# Open the mail program
open(MAIL,"|$mailprog -t");
 
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-Type: text/plain; charset=\"windows-1251\"\n";
print MAIL "Content-Transfer-Encoding: 8bit\n";
print MAIL "\n";
print MAIL "---------------------------------------------------------------------\n";
 
foreach $key (keys(%FORM)) {
   if ($key ne "subject" && $key ne "to" && $key ne "from" && $key ne "followupurl") {
      print MAIL "$key: $FORM{$key}\n";
   }
}
 
print MAIL "---------------------------------------------------------------------\n";
 
close(MAIL);
 
print "Location: $followupurl\n\n";

Всего записей: 12 | Зарегистр. 24-10-2006 | Отправлено: 07:44 16-01-2008
Apart

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, я тоже добавлю. Парсю выдачу, анализирую посещаемость сайта. С большинством поисковиков все более-менее понятно (хотя по-моему перекодировать Google у меня тоже не всегда получается). А Яндекс вообще узнает больше 1 кодировке. В результате часть запросов у меня нормально расшифровывается, а часть так и остается в виде символов (решается пробиваением запроса в поисковую строчку).  
 
Вот если кто занимался этим вопросом, интересно, как вы эту проблему решили. Пользовать какие-то библиотеки или софт - не предлагать. Перепробовал много чего-не помогло.  
 
У меня и сейчас на винте программа DeCoder v5.0, (c) Vitaly S. Bogdanov, 2001 валяется, но несмотря на ее опции и такие кодировки  
      D  Кодировка DOS(866)
      W  Кодировка Windows-1251
      K  Кодировка Koi-8r
      R  Кодировка WinWork
      M  Кодировка Macintosh
      8  Кодировка DOS(855)
      G  Кодировка ГОСТ
      B  Болгарская кодировка
      A  Английская клавиатура
      C  Русская клавиатура
 
заработать ее нормально у меня не получилось. Проще по-моему самому что-нибудь на Perl наваять.

Всего записей: 409 | Зарегистр. 10-05-2005 | Отправлено: 22:08 20-01-2008
arreke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как можно установить модуль Text::Iconv для perl.
Установлен ActivePerl для WinXP.
Вот собственно сам модуль - http://search.cpan.org/~mpiotr/Text-Iconv-1.7/Iconv.pm
Как бы его засунуть в PPM никак не могу понять.
 
Помогите, очень нужно.

Всего записей: 98 | Зарегистр. 11-01-2007 | Отправлено: 10:28 02-03-2008
arreke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
скрипт у меня в кодировке utf-8, и то что пишу на русском он так и выводит на русском.
а мне надо чтобы он строку привёл вот к такому состоянию:
 

Цитата:
%A7%E4%A7%D1%A7%DE%A7%E0%A7%D8%A7%D6%A7%DF%A7%DF%A7%D1%A7%F1+  
%A7%E1%A7%E0%A7%EA%A7%DD%A7%DA%A7%DF%A7%D1

 
то есть, чтобы выводил строку в коде utf8, типа аналого функции escape() в javascript.
подскажите, как это сделать.

Всего записей: 98 | Зарегистр. 11-01-2007 | Отправлено: 13:15 12-05-2008
Oleg Tarusov



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

Цитата:
А как можно установить модуль Text::Iconv для perl

 
Text::Iconv для винды надо ещё поискать.
Попробуй использовать встроенный модуль Encode, там много возможностей.

Всего записей: 175 | Зарегистр. 25-02-2006 | Отправлено: 23:09 07-06-2009 | Исправлено: Oleg Tarusov, 23:10 07-06-2009
Oleg Tarusov



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

Цитата:
А как можно установить модуль Text::Iconv для perl.  

 
Набери в консоли ppm install http://theoryx5.uwinnipeg.ca/ppms/Text-Iconv.ppd

Всего записей: 175 | Зарегистр. 25-02-2006 | Отправлено: 11:46 09-06-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 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