Thread Zeichenkodierung
(1 answers)
Opened by MarkusH at 2013-02-01 23:10
Hallo,
ich verzweifle noch an einem wahrscheinlich trivialen Problem mit der Zeichenkodierung. Mein Skript frägt eine Seite ab und erhält die Daten UTF-8 kodiert. Die Daten werden in einer komplexeren Datenstruktur abgespeichert. Bei einem Datenelement sollen die Leerzeichen entfernt und die Sonderzeichen ersetzt werden - und hier scheitert das Ganze. Erstmal die Sub: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sub formatNames { my $obj = shift; my $type = shift; my %sChar = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss" ); my $replacement = join ("|", keys(%sChar)); if ($type eq 'filename') { my $filename = $obj->{DATA}{name}; $filename =~ s/\s*//g; $filename =~ s/($replacement)/$sChar{$1}/g; $obj->{DATA}{filename} = $filename; return } In dem entsprechenden String werden die Leerzeichen alle noch ersetzt. Die Umlaute jedoch werden völlig ignoriert - ein 'völlig' wird nicht in 'voellig' umgewandelt. Ich habe schon einige Sachen aus diesem Forum durch, dazu gehören: Encode::Guess -> liefert UTF-8 zurück Encode::Encode bzw. Decode bringt keine Unterschiede. Encode::from_to: liefert die Anzahl der Zeichen zurück. (??) Wie bekomme ich die Umlaute in UTF-8 kodierten Strings umgewandelt? $q =~ /(bb|[^b]{2})/
|