Cz::Cstocs a UTF-8

Honza Pazdziora adelton na fi.muni.cz
Úterý Duben 19 16:15:46 MEST 2005


On Tue, Apr 19, 2005 at 03:26:46PM +0200, Jan Kasprzak wrote:
> 	Mam takovy problem s konverzi z/do UTF-8. Mam "legacy" aplikace,
> ktere pouzivaji Cz::Cstocs a potrebuju je postupne migrovat na novejsi
> Perl. No a automaticke testy mi odhalily problem, ze konverze do UTF-8
> nenastavuje UTF-8 flag, coz pak dale vadi.
> 
> ------------------------------------------------
> #!/usr/bin/perl -w
> 
> use Cz::Cstocs;
> use Encode;
> 
> my $iue = sub { Encode::decode('iso-8859-2', shift); };
> my $iuc = new Cz::Cstocs 'il2', 'utf8';
> 
> my $data = 'ì¹èø¾ø¾ýáíé';
> # Na predchozim radku je horni rada ceske klavesnice (9 znaku od e s hackem
> # po e s carkou).
> 
> print join ' ', map { ord } split //, $data; print "\n";
> print join ' ', map { ord } split //, &$iuc($data); print "\n";
> print join ' ', map { ord } split //, &$iue($data); print "\n";
> ------------------------------------------------
> 
> 	No a ted je otazka, jak tohle resit, nejlepe tak, abych nemusel
> menit ty aplikace, ale jen Cz::Cstocs (ktere mam na systemu s novejsim
> Perlem asi jine, takze zmena nevadi).

A potrebujes teda co? Neni reseni tam vsude misto Cz::Cstocs dat to
Encode? Nebo chces Cz::Cstocs ten flag nastavovalo? Pak asi
neco jako (netestovano)

--- Cstocs.pm.orig      2005-04-19 16:12:33.000000000 +0200
+++ Cstocs.pm   2005-04-19 16:14:13.000000000 +0200
@@ -461,6 +461,10 @@
                $fntext .= qq! \$e =~ s/$src/\$conv->{\$&}/sog; !;
        }

+       if ($outputenc eq 'utf8') {
+               $fntext .= q! utf8::decode($e); !;
+       }
+
        $fntext .= ' $e; } else { undef; }} @_; if (wantarray) { return @converted; } else { return join "", map { defined $_ ? $_ : "" } @converted; } }';

        print STDERR "Conversion function for $inputenc to $outputenc:\n$fntext\n" if DEBUG;

Nebo jeste neco jineho?

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
		Only self-confident people can be simple.


Další informace o konferenci Perl