恢复 UTF8 表中的 Latin1 字符:解决方案
正如您所提到的,在 PHP 和 MySQL 之间设置字符集可确保新插入已正确存储。然而,恢复以前存储为 Latin1 且后来损坏的带有变音符号的旧数据可能具有挑战性。
要解决此问题,您可以使用 MySQL 转换功能:
convert(cast(convert(name using latin1) as binary) using utf8)
默认情况下,此功能可以修复大多数损坏的数据,而无需任何进一步的修改。但是,您可能需要根据初始编码转换期间数据的更改方式来调整内部转换。
考虑以下示例:
$result = mysql_iquery('SELECT * FROM `table`'); while ($row = mysql_fetch_assoc($result)) { $message = $row['name']; $message = convert(cast(convert($message using latin1) as binary) using utf8); mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"'); }
通过使用此函数,您应该能够恢复损坏的变音符号并正确更新受影响的行。
以上是如何恢复 UTF8 MySQL 表中损坏的 Latin1 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!