Thread Problem mit Sonderzeichen für Dateinamen (13 answers)
Opened by jan99 at 2015-09-03 10:30

jan99
 2015-09-03 10:30
#182028 #182028
User since
2008-09-18
439 Artikel
BenutzerIn
[default_avatar]
Moin!

jetzt sollen Dateien angelegt werden und die deutschen Umlaute werden nicht richtig dargestellt.

Aus einer UTF8 ohne Bom stammt ein Wort mit "Ü".

Diese Datei wird mit wie folgt eingelesen:
Code (perl): (dl )
open( my $fh_group, '<:encoding(utf8)', $config{group_file} ) or die( "$config{group_file}: $!" );


Dann soll die Datei angelegt werden:
Code (perl): (dl )
  open(my $fh_html, ">:encoding(UTF-8)", DeutscheUmlaute($cuix_report)) or die ("Can't open csv-file: ".$cuix_report." ($!)\n");


und für die Umlautkonvertierung habe ich eine andere Funktion umgebaut:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sub    DeutscheUmlaute
    {
    my $str=shift;
    $str=Encode::decode('utf8',    $str);    #JACQUES    geändert    
    #    already    quoted    transform    to    ignore
    $str=~s/&(#?\w+);/-!=$1=!-/gs;

    #    known    quotes
    $str=~s/ä/ae/g;
    $str=~s/ö/oe/g;
    $str=~s/ü/ue/g;
    $str=~s/Ä/ae/g;
    $str=~s/Ö/Oe/g;
    $str=~s/Ü/Ue/g;

    #    quote    unknown    non    ascii
    $str=~s/([^\x20-\x7F])/'&#'.ord($1).';'/gse;

    #    transorm    back    already    quoted
    $str=~s/-!=(#?\w+)=!-/&$1;/gs;
    return    $str;
    }


Aber im Dateinamen ist statt des "Ü" jetzt ein "&#65533;"

Kann mir einer sagen was ich da durcheinander gebracht habe oder wie ich es besser hätte gemacht ?

Gruß Jan
perl-Greenhorn - Win7 64bit / strawberry (ehem. activeperl) - www.OpenStreetMap.de

View full thread Problem mit Sonderzeichen für Dateinamen