更正 MySQL 表中以 UTF8 形式存储的 Latin1 字符
您的问题是由于在插入过程中将 Latin1 数据不正确地转换为 UTF8 引起的。尽管设置了正确的字符集,但旧数据仍然被错误的字符损坏。为了纠正这种情况,我们需要将受影响的数据转换为正确的 UTF8 表示形式。
推荐的解决方案涉及利用 MySQL 函数:
convert(cast(convert(name using latin1) as binary) using utf8)
此函数采用名称列数据,将其解释为 Latin1 二进制,然后将其转换为 UTF8。外部转换为二进制可确保数据作为原始数据进行处理,从而防止进一步的字符集转换破坏数据。
以下是一个示例查询:
UPDATE `table` SET `name` = convert(cast(convert(name using latin1) as binary) using utf8) WHERE `name` LIKE '%[non-UTF8 characters]%'
此查询更新所有带有非- 名称列中的UTF8字符,保证数据正确转换。
注:如果按原来的编码处理稍微改变数据,您可能需要在转换函数调用中省略到 Latin1 二进制的内部转换。
以上是如何纠正 MySQL 中错误存储为 UTF8 的 Latin1 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!