Forum Webscript.Ru
Программирование => Perl => Тема начата: glebushka от 29 Апреля 2004, 00:40:23
-
Не буду оригинальным:))
Задача стоит обратная задаче в соседнем треде:)
Есть строка в utf8.
Нужно получить win1251.
Encode не предлагать. (Версия Perl 5.6.1.).
А Convert::Cyrillic не работает:(
Пишу:
#!/usr/bin/perl -w
use strict;
use Convert::Cyrillic;
print "Content-type: text/html; Charset=windows-1251\\n\\n";
my $string;
#..... тут считываем в переменную $string текст в формате utf8
my $src = \'UTF-8\';
my $dst = \'WIN\';
my $result = Convert::Cyrillic::cstocs($src, $dst, $string);
print "Извлекаем данные:";
print $result;
exit;
Результат можно посмотреть по адресу http://abik.ru/cgi-bin/test.cgi
Кстати, perldoc Convert::Cyrillic опечатка:)
В части SYNOPSIS:
use Convert::Cyrillic;
$src = \'koi8\';
$dst = \'win\';
$SrcBuf = \'text in koi8 here\';
$DstBuf = Convert::Cyrillic::cstocs ($Src, $Dst, $SrcBuf);
И всё таки вопрос: почему не работает перекодировка?:(
-
UTF-8 -> UTF8
Cyrillic.pm
----------
sub cstocs {
my ($Src, $Dst, $Buf) = @_;
$Src = uc ($Src); $Src .= \'8\' if $Src eq \'KOI\';
$Dst = uc ($Dst); $Dst .= \'8\' if $Dst eq \'KOI\';
if ([b]$Src eq \'UTF8\'[/b]) {
my $map = Unicode::Map8->new("cp1251");
$Buf = $map->to8 (Unicode::String::utf8 ($Buf)->ucs2);
$Src = \'WIN\';
}
if ([b]$Dst eq \'UTF8\'[/b]) {
-
Wyclef, спасиба!:)
работает!:)
[OFF]Вот и читай после этого perldoc:))))[/OFF]
-
up ...
млин целый час сегодня с из-за этой опечатки потерял... (