3

我收到了来自以 latin_swedish_1 编码的 MySQL 数据库的转储。转储编码是 UTF-8,但它显示错误编码的字符。我要在其中导入转储的目标数据库的字符集设置为 utf8_general_ci。

但是,我在导入转储时保留了错误编码的字符。

我的问题是:如何在导入之前修复这个转储?

4

1 回答 1

4

我刚刚意识到:如果您可以在支持 utf8 的文本编辑器中看到格式错误的字符,那么数据在源数据库中已经是格式错误的。

我假设您在转储中看到像“é”这样的字符串,而不是“é”。UTF-8 序列存储在源数据库的 latin1 表中。生成转储时,此类序列再次转换为 UTF-8。

您需要通过回滚转换的一个阶段来修复您的转储。在 Linux 下,这可以很容易地完成:

iconv -f utf8 -t ISO88591 < broken.sql > fixed.sql

导入fixed.sql.

于 2013-06-05T10:13:25.767 回答