Perl Filesystem Encoding erkennen
bearbeitet von
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.
Update: Allerdings - ich habe gerade nochmal den Thread durchgelesen - dass für ein ü eine 3-Byte Sequenz kommt ist schon merkwürdig. Wären diese 3 Bytes UTF-8, würden sie das Zeichen \uF895 codieren, irgendwas chinesisches. Kann es sein, dass die Probleme früher entstehen?
_Rolf_
--
sumpsi - posui - clusi
Perl Filesystem Encoding erkennen
bearbeitet von
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.
_Rolf_
--
sumpsi - posui - clusi