beatovich: Perl Filesystem Encoding erkennen

Beitrag lesen

hallo

Hallo ihrs,

willkommen im Windows Codepage-Chaos. Ich habe KEINE Ahnung, welche Namenscodierung NTFS verwendet, aber es scheint voll Unicode-kompatibel zu sein, weil man sogar ein 😀 Emoji in einen Dateinamen setzen kann. Auf der Befehlszeile rafft er DAS allerdings nicht, ein DIR Befehl zeigt statt des Emoji zwei Kästchen.

Nimmt man etwas weniger exotisches aus der BMP, z.B. kyrillisch Л, kann ein DIR Befehl es anzeigen und ein type-Befehl auf der Kommandozeile die Datei auch auslesen. In einer CMD-Datei allerdings klappt das nicht - es sei denn ich verwende Codepage 866 für das Encoding der Datei und setze vorher noch CHCP 866 ab.

Das Euro-Zeichen ist in der Codepage 850 (Standard-Commandline Codepage, auch heute noch) undefiniert. In der Codepage 858 ist es \xD5, in der Windows Codepage 1252 ist es \x80. Interessante Frage wäre also nun: Wenn Du den Namen mit dem € drin nach Perl eingelesen hast, welchen Hex-Code hat das € da? \xD5, \x80, \x20 \xAC oder 0xE2 0x82 0xAC? Das sind die Codierungen in CP858, CP1252, UTF-16 und UTF-8.

Meine 5 Cent liegen auf \xD5.

Also der aktuelle Code

				if( $file =~ /\.(?:$filetypes)$/ && -f $file && -r $file ){
					$list.= encode("utf8", decode("iso-8859-1",
						sprintf(qq{<option value="%s/%s">%s/%s  [%s]</option>\n}, 
							$f, $_ , $f, $_ ,
							( -w $file ? $mode : '+r')
					))); 
				}

Das wird also als HTML UTF-ausgegeben und ich kann diese URL dann aktivieren.

Im <input> lese ich zuerst: /html/pub/äöüçé€.txt

Wenn ich dann ein XHR GET ausführe wird auch URI:encode angewedet und ich lese:

http://localhost/html/pub/%C3%A4%C3%B6%C3%BC%C3%A7%C3%A9%C2%80.txt NOT FOUND

Schuld ist hier das Euro-zeichen.

##Nächster Versuch: diesmal CP1252 statt "iso-8859-1"

Resultat:

<input> zeigt: /html/pub/äöüçé€.txt

Nach eine XHR Get

http://localhost/html/pub/%C3%A4%C3%B6%C3%BC%C3%A7%C3%A9%E2%82%AC.txt OK

Das heisst: CP1252 ist korrekt auf meinem Windows-System.

Danke.

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