首頁 >後端開發 >php教程 >如何在MySQL資料庫中正確地將Latin1字元轉換為UTF-8?

如何在MySQL資料庫中正確地將Latin1字元轉換為UTF-8?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 20:22:29461瀏覽

How to Correctly Convert Latin1 Characters to UTF-8 in a MySQL Database?

將UTF-8 表中的Latin1 字元轉換為UTF-8

編碼差異:

您發現了一個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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn