dedlfix: Die gute alte Zeichenkodierung

Beitrag lesen

Tach!

… ich habe also noch ein wenig weiter versucht zu interpretieren. Im Dump steht bspw. folgendes Wort:
Spritzfüller

Das ist UTF-8 interpretiert als ISO-8859-1. Es kann aber auch UTF-8 sein, das als ISO-8859-1 gelesen und nochmal nach UTF-8 umkodiert wurde und nun als UTF-8 gelesen wird. Bei Fehlern kann man solche kruden Szenarien nicht ausschließen. Das beste ist, sich solchen Dinge nicht im von irgendwem interpretierten Zustand anzusehen sondern die Bytes. Unter PHP kann man sehr gut urlencode() missbrauchen, um sich die Bytes der Nicht-ASCII-Zeichen anzusehen. Ein Hexeditor tut es aber auch.

Mein Editor bietet mir zum Thema Zeichenkodierung zwei (genau genommen 3) Möglichkeiten. Die erste ist, dass er mir anzeigt mit welcher Kodierung ein Dokument abgespeichert ist.

Das ist theoretisch unmöglich. Hier kann er nur anhand bestimmter Indizien raten. Mit mehr oder weniger Erfolg.

[...] denn interpretiere ich das Wort als utf-8 wird es korrekt dargestellt.

Nun, dann wird es wohl so kodiert sein.

In meinem Dokument steht, wenn ich das richtig verstehe ein utf-8-kodierter String, der nicht als utf-8 interpretiert wird.

Von wlchem System wird er falsch interpretiert? Und was wurde diesem System gesagt, sei die vorliegende Kodierung?

Im Dump steht ausserdem DEFAULT CHARSET=latin1, im Browser aber utf-8.

Wenn man dem Dump-Programm nicht sagt, in welcher Kodierung es die ausgelesenen Daten speichern soll, nimmt es irgendeinen Default-Wert.

Ohne etwas über den Transfer-Typ herausgefunden zu haben, würde ich das so interpretieren, dass bei der Anwendung lediglich das Frontend irgendwann mal auf utf-8 umgestellt worden ist und utf-8-kodierte Daten irgendwie in der latin1-DB speichert.

Transfer-Typ ist im HTTP-Umfeld etwas anderes. Die charset-Angabe im Content-Type ist hier maßgeblich.

Ganz pervers ist aber folgender Text, den ich in dem Dump und im Frontend gefunden habe:
für kleine Reparatur- und Durchschliffstellen. Überschweißbar!

Kodierungsmix/-müll. Kommt davon, wenn man das Zusammenspiel zwischen den Systemen nicht ordentlich aufgesetzt hat.

Hier fehlt mir die Phantasie ;) Der Text steht in ein und dem selben Formular- bzw. DB-Feld. Wie kriegt man das hin?

Händisch korrigieren. Es sei denn, du entdeckst ein Muster, das sich ohne Ausnahmen durch alle Daten zieht, dann kannst du das durch Suchen und Ersetzen oder ähnlichem korrigieren.

dedlfix.