|
|
|||||||
![]() |
UTF-8 String zu Latin-1 konvertieren
Wie kann man einen UTF-8 codierten String bzw. Datei ins Latin-1 Format konvertieren?
Folgende Subroutine erledigt genau diese Aufgabe:
sub utfDecode { # $outputtext=&utfDecode($inputtext); UTF-8 --> Latin-1
my $string = shift;
$string =~ s/([\xe0-\xef])([\x80-\xbf])([\x80-\xbf])/"&#".(((ord($1) & 0x1f)*64+(ord($2) & 0x3f))*64+(ord($3) & 0x3f)).";"/gex;
$string =~ s/([\xc4-\xdf])([\x80-\xbf])/"&#".((ord($1) & 0x1f)*64+(ord($2) & 0x3f)).";"/gex;
$string =~ s/([\xc0-\xc3])([\x80-\xbf])/chr(((ord($1) & 0x03) << 6) | (ord($2) & 0x3f))/gex;
return $string;
}
Um den Inhalt einer Variable zu konvertieren, genügt folgender Aufruf: Bei einer kompletten Datei, sähe das dann so aus:
open(INPUT,$inputfile);
open(OUTPUT,">".$outputfile);
while (<INPUT>)
{
print &utfdecode($_);
}
close(INPUT);
close(OUTPUT);
Dieser Artikel wurde zugesandt von: Jürg Sommer, knowledge@cgicorner.ch
|
||||||