Thread Korrekter Umgang mit Fileencodings (3 answers)
Opened by pinwheel at 2015-07-11 12:56

betterworld
 2015-07-11 15:35
#181542 #181542
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Zum Einlesen kannst du dann nicht den utf-8-Modus nehmen, weil der eben solche Fehler wirft.
Im Latin1-Modus kannst du jede Datei einlesen.

Wenn die Datei utf-8 war, kannst du einen fälschlicherweise als Latin1 eingelesenen String einfach "dekodieren", zum Beispiel mit decode_utf8 aus dem Modul Encode. Wenn decode_utf8 einen Fehler wirft, nimmst du halt das undekodierte Ergebnis (das ist dann halt Latin1).

Auf diese Weise kannst du UTF-8 und Latin-1 "korrekt" dekodieren. Es klappt in den meisten Fällen. Es gibt natürlich immer Fälle, die doppeldeutig sind (aber selten). Du hast aber nicht dazugeschrieben, ob Du noch mehr Encodings erkennen möchtest. Mit diesen beiden klappt es jedenfalls relativ gut.

Nun kommt das Problem: Es ist oft etwas fummelig, den Fehler von decode_utf8 zu erkennen und dann im Fehlerfall an das undekodierte Ergebnis ranzukommen. Guck Dir halt "perldoc Encode" an (das Modul gibt es seit ca. Perl 5.8) und versuch es hinzukriegen. Wenn ich mich richtig errinere, war das Recovern von Fehlern auch zeitweise etwas buggy, daher ist es wie gesagt fummelig.

View full thread Korrekter Umgang mit Fileencodings