Korrigieren von als UTF8 in einer MySQL-Tabelle gespeicherten Latin1-Zeichen
Ihr Problem entsteht durch eine fehlerhafte Konvertierung von Latin1-Daten in UTF8 beim Einfügen. Trotz der Einstellung der richtigen Zeichensätze bleiben die älteren Daten mit falschen Zeichen beschädigt. Um diese Situation zu beheben, müssen wir die betroffenen Daten in die korrekte UTF8-Darstellung konvertieren.
Die empfohlene Lösung beinhaltet die Verwendung der MySQL-Funktion:
convert(cast(convert(name using latin1) as binary) using utf8)
Diese Funktion übernimmt die Namensspaltendaten, interpretiert es als Latin1-Binärdatei und konvertiert es dann in UTF8. Die äußere Konvertierung in Binär stellt sicher, dass die Daten als Rohdaten behandelt werden und verhindert, dass sie durch weitere Zeichensatzkonvertierungen beschädigt werden.
Hier ist eine Beispielabfrage:
UPDATE `table` SET `name` = convert(cast(convert(name using latin1) as binary) using utf8) WHERE `name` LIKE '%[non-UTF8 characters]%'
Diese Abfrage aktualisiert alle Zeilen mit nicht -UTF8-Zeichen in der Namensspalte, um sicherzustellen, dass die Daten korrekt konvertiert werden.
Hinweis: Wenn sich der ursprüngliche Kodierungsprozess geändert hat Wenn Sie die Daten geringfügig ändern, müssen Sie möglicherweise die innere Konvertierung in die Binärdatei Latin1 im Aufruf der Konvertierungsfunktion weglassen.
Das obige ist der detaillierte Inhalt vonWie kann ich Latin1-Zeichen korrigieren, die in MySQL fälschlicherweise als UTF8 gespeichert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!