我试图从一台服务器导入一些数据到另一台。 但是当我这样做的时候,我遇到了字符集问题。
像Goiânia这样的词变成了Goi?ni,conceição变成了concei?oo
我的应用程序被设置为使用latin1字符集
服务器1:MySQL字符集:UTF-8 Unicode(utf8)表整理:latin1_swedish_ci
服务器2:MySQL字符集:UTF-8 Unicode(utf8)表整理:latin1_swedish_ci
我用来从服务器1导出数据的命令mysqldump -u root -p –default-character-set = iso-8859-1 database_name> db.sql
用于还原到服务器2的命令mysql -u root -p database_name <db.sql
根据mysql的版本,你想要使用:
–default-字符集= LATIN1
要么
–default-字符集= UTF8
在某些版本的mysqldump中有一个奇怪的错误,那就是在命令行上指定utf8会对已经编码为utf8的表进行双重编码,如果我记得的话,这个表在utf8中是在5.0.51+之前的一年前被修复的。
如果你的字符集在表中被正确的指定了,我不相信你需要在执行转储时使用默认字符集,因为它需要从表中整理和字符集。
重新检查server 1
的sorting规则和字符集。 它看起来是一种不同的格式,即使你强制另一个( iso-8859-1
)出口这不能工作。 仔细检查表和数据库等。
让我知道这是否有帮助。