编码差异:
您发现了一个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中文网其他相关文章!