Forum Webscript.Ru

Программирование => Perl => Тема начата: glebushka от 29 Апреля 2004, 00:40:23

Название: utf8->win1251
Отправлено: 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);
И всё таки вопрос: почему не работает перекодировка?:(
Название: utf8->win1251
Отправлено: Wyclef от 29 Апреля 2004, 03:29:31
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]) {

Название: utf8->win1251
Отправлено: glebushka от 29 Апреля 2004, 22:57:38
Wyclef, спасиба!:)
работает!:)
[OFF]Вот и читай после этого perldoc:))))[/OFF]
Название: utf8->win1251
Отправлено: commander от 18 Августа 2006, 14:16:48
up ...
млин целый час сегодня с из-за этой опечатки потерял... (