Wiederherstellen von Latin1-Zeichen in UTF8-Tabellen: Eine Lösung
Wie Sie bereits erwähnt haben, gewährleistet die Einstellung des Zeichensatzes zwischen PHP und MySQL neue Einfügungen korrekt gespeichert sind. Allerdings kann die Wiederherstellung alter Daten mit diakritischen Zeichen, die zuvor als Latin1 gespeichert und später beschädigt wurden, eine Herausforderung sein.
Um dieses Problem zu beheben, können Sie die MySQL-Konvertierungsfunktion verwenden:
convert(cast(convert(name using latin1) as binary) using utf8)
Standardmäßig Diese Funktion kann die meisten beschädigten Daten ohne weitere Änderungen reparieren. Möglicherweise müssen Sie jedoch die innere Konvertierung anpassen, je nachdem, wie die Daten während der ersten Codierungskonvertierung geändert wurden.
Betrachten Sie das folgende Beispiel:
$result = mysql_iquery('SELECT * FROM `table`'); while ($row = mysql_fetch_assoc($result)) { $message = $row['name']; $message = convert(cast(convert($message using latin1) as binary) using utf8); mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"'); }
Mit dieser Funktion sollten Sie Folgendes tun in der Lage sein, die beschädigten diakritischen Zeichen wiederherzustellen und die betroffenen Zeilen korrekt zu aktualisieren.
Das obige ist der detaillierte Inhalt vonWie kann ich beschädigte Latin1-Zeichen in UTF8-MySQL-Tabellen wiederherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!