編碼差異:
您發現了一個PHP 和MySQL 編碼設定之間不一致,導致UTF-8 表中的變音字元儲存不正確。雖然新插入現在是正確的,但舊行仍然包含損壞的字元。
修正措施:
要修正此問題,請利用MySQL 的Convert() 函數:
<code class="sql">convert(cast(convert(name using latin1) as binary) using utf8)</code>
此函數將Latin1 編碼的數據轉換為UTF-8。雙重轉換可確保資料在轉換過程中不會被截斷。
用法範例:
在您的程式碼中,在更新查詢中套用轉換:
<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>
這將使用正確轉換的UTF -8 字元更新表中的名稱列。
注意:
取決於資料變更在編碼轉換期間,您可能需要從查詢中省略內部轉換函數。測試這兩種方案並採用能產生所需結果的方案。
以上是如何在MySQL資料庫中正確地將Latin1字元轉換為UTF-8?的詳細內容。更多資訊請關注PHP中文網其他相關文章!