Thread Zeichenkodierung (1 answers)
Opened by MarkusH at 2013-02-01 23:10

MarkusH
 2013-02-01 23:10
#165401 #165401
User since
2012-04-08
161 Artikel
BenutzerIn
[default_avatar]
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})/

View full thread Zeichenkodierung