dedlfix: Fehlerhafte Umlaute reparieren

Beitrag lesen

Tach!

Bevor ich nun manuell die DB nach weiteren Fehlern durchsuche und manuell update, dachte ich, ich frag mal hier, ob es eine Lösung gibt dies automatisch zu reparieren?

Reparieren heißt, zunächst nachzuschauen, was genau kaputt ist, dann kann man es gezielt ausbessern. Auch bei Verlusten durch fehlerhafte Zeichenkodierungen gibt es kein für alle Lebenslagen gültiges Reperaturrezept.

Gefunden habe ich unter anderem diesen Ansatz:
http://pr11.de/mysql-umlaute-reparieren.html
Wenn ich es jedoch so versuche, wird nichts ersetzt
Ich vermute der Autor ging von einer anderen falschen Kodierung aus.

Ja, er hatte UTF-8-kodierte Daten gesendet, dem DBMS aber gesagt (oder es aufgrund seiner Defaultkonfiguration glauben lassen), es sei Latin1/ISO-8859-1. Oder aber er hat doppelt UTF-8-kodierte Daten gesendet und MySQL ging von UTF-8 aus.

Hat jemand eine Idee, ob man dies irgendwie elegant "automatisch" reparieren kann, ohne wirklich jede Zeile direkt upzudaten?
--Ihre Datei ist zu gro�
--Bitte w�hlen Sie eine kleinere Datei

Das sieht eher so aus, als ob jemand UTF-8 anzeigen soll, aber ISO-8859-1 bekommt. Denn dann kommt an der Stelle des Umlauts eine ungültige UTF-8-Sequenz, was zu diesem � führt.

Vorschlag zur Vorgehensweise: Frag einen dieser Datensätze mit PHP ab. Gib aber direkt nach dem Connect mit mysql_set_charset('latin1'), dass du Latin1 haben möchtest. Gib das Ergebnis mal mit urlencode() aus, um die Bytes des Umlautes anzusehen. Wenn das nur zum Fragezeichen führt (oder %3F), dann wiederhol das nochmal, aber mit 'utf8' statt 'latin1'. Abhängig vom Ergebnis kann man dann weitersehen.

dedlfix.