dedlfix: cp1252 zu UTF-8

Beitrag lesen

Tach!

Ich habe doch dieses Beispiel:
Denn wenn ich eine UTF-8 Datei einlese mit folgendem Inhalt

"ßä#eöt+3#öt3+4lrägojpjö3gmrp42°^t'*"

erscheint wieder Beides: UTF-8 kodiert ISO-8859-1 kodiert

Eben, weil (ich zitiere): „Man kann auch nicht UTF-8 und ISO-8859-1 und ASCII voneinander unterscheiden, wenn der Text lediglich ASCII-Zeichen enthält. Er ist dann zu allen drei Kodierungen kompatibel.“

Das trifft hier aber nicht zu.

Die Zeichen in deiner Beispieleingabe sitzen in allen drei Kodierungen an den selben Stellen. Also ist die Eingabe in allen drei Kodierungen gültig.

Die Bytes dieses Textes, in UTF-8-kodiert, ergeben korrekt UTF-8-Sequenzen. Damit ist es gültiges UTF-8. Da aber jedes Byte auch einem Zeichen von ISO-8859-1 zugeordnet ist (Ausnahmen ignoriert) ergibt das auch gültiges ISO-8859-1. Nur hat man dann nicht mehr den Text von oben sondern die Umlaute und ß sind durch zwei andere Zeichen ersetzt. Es gibt keine Bytesequenz, die nicht auch gültiges ISO-8859-1 ist (Ausnahmen ignoriert).

Ein Editor sagt mir hier klar, das ist UTF-8.

Er hat für sich laut Programmierung diese Entscheidung getroffen.

Ja, wenn gültige UTF-8-Sequenzen erkannt werden, wird es wohl UTF-8 sein, entscheidet der Editor. Anderenfalls wird es eine Ein-Byte-Kodierung sein. Welche er da nimmt, kann zum Beispiel davon abhängen, welche Lokalisierungseinstellungen im System zu finden sind, und welche Kodierung dazu üblicherweise verwendet wird. Oder es ist im Editor konfiguriert, welche Kodierung für Nicht-UTF-8-Texte er nimmt.

Henry, wenn du unbekannten Text analysieren möchtest, kannst du nur genauso vorgehen.

Ist es gültiges UTF-8? => UTF-8 ansonsten: ISO-8859-1

Du kannst dir dann zwar nicht sicher sein, dass es nicht auch anderes ISO-8859-x ist, aber die Wahrscheinlichkeit sollte gering sein, wenn die Quelle deutsche oder westeuropäische Texte sind. Ist es tatsächlich eine andere ISO-8859-x-Kodierung, kannst du es nicht mit vertretbarem technischem Aufwand herausfinden, wenn du nicht irgendeine fertige Komponente dafür verwendest, die mit irgendwelchen Inhaltsanalysen genauer zu raten versucht.

dedlfix.