恢復UTF8 表中的Latin1 字元:解決方案
如您所提到的,在PHP 和MySQL 之間設定字元集可確保新插入已正確儲存。然而,恢復先前儲存為 Latin1 且後來損壞的帶有變音符號的舊資料可能具有挑戰性。
要解決此問題,您可以使用 MySQL 轉換功能:
convert(cast(convert(name using latin1) as binary) using utf8)
預設情況下,此功能可以修復大多數損壞的數據,而無需任何進一步的修改。但是,您可能需要根據初始編碼轉換期間資料的變更方式來調整內部轉換。
考慮以下範例:
$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'].'"'); }
透過使用此函數,您應該能夠恢復損壞的變音符號並正確更新受影響的行。
以上是如何還原 UTF8 MySQL 表中損壞的 Latin1 字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!