Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我收到了来自以 latin_swedish_1 编码的 MySQL 数据库的转储。转储编码是 UTF-8,但它显示错误编码的字符。我要在其中导入转储的目标数据库的字符集设置为 utf8_general_ci。
但是,我在导入转储时保留了错误编码的字符。
我的问题是:如何在导入之前修复这个转储?
我刚刚意识到:如果您可以在支持 utf8 的文本编辑器中看到格式错误的字符,那么数据在源数据库中已经是格式错误的。
我假设您在转储中看到像“é”这样的字符串,而不是“é”。UTF-8 序列存储在源数据库的 latin1 表中。生成转储时,此类序列再次转换为 UTF-8。
您需要通过回滚转换的一个阶段来修复您的转储。在 Linux 下,这可以很容易地完成:
iconv -f utf8 -t ISO88591 < broken.sql > fixed.sql
导入fixed.sql.
fixed.sql