Kodierungsdiskrepanz:
Sie haben eine entdeckt Fehlausrichtung zwischen PHP- und MySQL-Kodierungseinstellungen, was zu einer falschen Speicherung diakritischer Zeichen in einer UTF-8-Tabelle führt. Während neue Einfügungen jetzt korrekt sind, enthalten ältere Zeilen immer noch beschädigte Zeichen.
Korrekturmaßnahme:
Um dieses Problem zu beheben, verwenden Sie die Funktion „convert()“ von MySQL:
<code class="sql">convert(cast(convert(name using latin1) as binary) using utf8)</code>
Diese Funktion konvertiert Latin1-codierte Daten in UTF-8. Durch die doppelte Konvertierung wird sichergestellt, dass die Daten während des Konvertierungsprozesses nicht abgeschnitten werden.
Beispielverwendung:
Wenden Sie in Ihrem Code die Konvertierung innerhalb Ihrer Aktualisierungsabfrage an:
<code class="sql">mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string(convert(cast(convert(name using latin1) as binary) using utf8)).'" WHERE `a1`="'.$row['a1'].'"');</code>
Dadurch wird die Namensspalte in Ihrer Tabelle mit den korrekt konvertierten UTF-8-Zeichen aktualisiert.
Hinweis:
Abhängig von der Datenänderung Während der Codierungskonvertierung müssen Sie möglicherweise die innere Konvertierungsfunktion in der Abfrage weglassen. Testen Sie beide Szenarien und übernehmen Sie das Szenario, das die gewünschten Ergebnisse liefert.
Das obige ist der detaillierte Inhalt vonWie konvertiert man Latin1-Zeichen in einer MySQL-Datenbank korrekt in UTF-8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!