首页  >  文章  >  后端开发  >  如何在MySQL数据库中正确地将Latin1字符转换为UTF-8?

如何在MySQL数据库中正确地将Latin1字符转换为UTF-8?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 20:22:29384浏览

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