beatovich: Perl Filesystem Encoding erkennen

Beitrag lesen

hallo

hallo

Hier lese ich filenamen über readdir ein und gebe das Ergebnis an HTML aus, während der HTML Output als UTF-8 deklariert ist.

readdir liefert keine kodierten Zeichenketten. Von daher ist encode_utf8 nicht nur überflüssig sondern falsch.

Was das Anlegen von Dateien betrifft:

Um nicht erlaubte Zeichen im Namen kümmert sich die Shell. Da Perl an der Shell vorbei mit dem OS kommuniziert, musst Du Dich selbst darum kümmern. Hierzu ist festzustellen, daß Perl auch Dateien mit unerlaubten Zeichen im Namen anlegen kann. Und es gibt Dateien, die können nach dem Anlegen nicht mit Perl, jedoch in der Shell gelöscht werden. Es ist also auch eine Frage, ob und wie Deine Dateien wieder sichbar gemacht werden können.

Teste das am Besten mal selbst:

use strict;
use wanings;
use IO::File;

my $dir = "d:/tmp/files";
my $fh = IO::File->new;

# Dateien anlegen
foreach my $c ( 0..255 ){
    my $filename = pack "C", $c;
    $fh->open("$dir/$filename", O_CREAT|O_RDWR) or do{
        printf "Kann Datei mit Name %s Ord %d nicht anlegen\n", $filename, $c;
        next;
    };
}

# Dateien löschen
chdir $dir or die $!;
my @files = <*>;
foreach my $f( @files ){
    unlink "$dir/$f" or do {
        printf "\nKann Datei %s, %d nicht löschen: $!\n", $f, unpack "C", $f; 
        next;
    };
}
	$_ =~ /[^A-Za-z0-9_.-]/ and warn($_ . "\n" .unpack( "C", $f));

Ich wollte schon immer chinesisch lernen.

孓慴⁏捴′㜠ㄵ㨲㔺㈲′〱㡝楳獥摩琮灬㨠浵獩欭湯瑥渭曼爭杩瑡牲攮桴浬ਜ਼卡琠佣琠㈷‱㔺㈵㨲㈠㈰ㄸ崠歩獳敤楴⹰氺‱〹⁡琠䌺⽕獥牳⽂敡琯䑯捵浥湴猯扥慴⵳瑯散歬楮⹣栯桴浬⽰氯歩獳敤楴⹰氠汩湥‱ㄵ⸊孓慴⁏捴′㜠ㄵ㨲㔺㈲′〱㡝楳獥摩琮灬㨠ﱀ耮瑸琊孓慴⁏捴′㜠ㄵ㨲㔺㈲′〱㡝楳獥摩琮灬㨠㈲㠠慴⁃㨯啳敲猯䉥慴⽄潣畭敮瑳⽢敡琭獴潥捫汩渮捨⽨瑭氯灬⽫楳獥摩琮灬楮攠ㄱ㔮

Wir nähern uns eindeutig der Lösung.

0 92

Perl Filesystem Encoding erkennen

beatovich
  • perl
  1. 0
    dedlfix
    1. 0
      beatovich
      1. 0
        pl
      2. 0
        pl
        1. 0
          beatovich
          1. 0
            pl
            1. 0
              beatovich
              1. 0
                pl
                1. 0
                  beatovich
                  1. 0
                    pl
                    1. 0
                      pl
                      1. 0
                        beatovich
                    2. 0
                      beatovich
                      1. 0
                        pl
                        1. 0
                          beatovich
                          1. 0
                            pl
                            1. 0
                              beatovich
                              1. 0
                                Tabellenkalk
                              2. 0
                                pl
                                1. 0
                                  beatovich
                                2. 0
                                  beatovich
                                  1. 0
                                    pl
                                    1. 0
                                      beatovich
                                      1. 0
                                        pl
                                        1. 0
                                          beatovich
                                          1. -2
                                            pl
                                            1. 0
                                              beatovich
                                              1. 0
                                                pl
                                              2. 1
                                                Rolf B
                                                1. 0
                                                  beatovich
                                                  1. 0
                                                    Rolf B
                                                    1. 0
                                                      beatovich
                                                    2. -1
                                                      pl
                                                      1. 0
                                                        beatovich
                                                        1. -1
                                                          pl
                                                      2. 1
                                                        Rolf B
                                                        1. -1
                                                          pl
                                                          1. 0
                                                            Rolf B
                                                            1. 0
                                                              beatovich
                                                              1. 0
                                                                Rolf B
                                                                1. 0
                                                                  beatovich
                                                                  1. 0
                                                                    Rolf B
                                                            2. 0
                                                              pl
                                                        2. -1
                                                          pl
                                                        3. 0
                                                          pl
                                                          1. 0
                                                            dedlfix
                                                            1. 0
                                                              pl
                                                              1. 1
                                                                dedlfix
                                                                1. 0
                                                                  pl
    2. 1
      ursus contionabundo
      1. 0
        ursus contionabundo
        1. 0
          TS
          • dateisystem
          • perl
          1. 0
            ursus contionabundo
        2. 0
          Robert B.
          1. 0
            pl
            1. 1
              Matthias Apsel
              • sonstiges
              1. -1
                pl
                1. 0
                  dedlfix
                  1. 0
                    pl
                    1. 0
                      dedlfix
                      1. 0
                        pl
                        1. 0
                          dedlfix
                          1. -1
                            pl
                            1. 0
                              dedlfix
                              1. 0
                                pl
                            2. 0
                              Christian Kruse
                              1. -1

                                Woran erkennt man einen Bug

                                pl
                                1. 0
                                  dedlfix
                                  1. 0
                                    Rolf B
                                    1. -3
                                      pl
                                      1. 1
                                        Robert B.
                                  2. 0
                                    pl
                                  3. 0

                                    Woran erkennt man einen Bug, updated

                                    pl
                                    1. 0
                                      dedlfix
                                      1. -1
                                        pl
                                2. 6
                                  Christian Kruse
                                  1. -2
                                    pl
                                    1. 5
                                      Christian Kruse
                2. 0
                  beatovich
                3. 0
                  Robert B.
                  1. 0

                    Systematische Fehler

                    pl
                    1. 0
                      Robert B.
            2. 0
              Robert B.
          2. 0
            ursus contionabundo
            1. 0
              Robert B.
  2. 0
    TS
  3. 0
    pl
  4. 0
    klawischnigg
    1. 0
      pl
      1. 0
        klawischnigg
        1. -1
          pl