Mysql字符集问题

Mysql字符集问题

我正在尝试将一些数据从一台服务器导入到另一台服务器。但是当我这样做时,我遇到了字符集问题。

像 Goiânia 变成了 Goiâni,conceição 变成了 conceição

我的应用程序设置为使用 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

答案1

根据 mysql 的版本,您可以使用以下任一方法:

--默认字符集=latin1

或者

--默认字符集=utf8

mysqldump 的某些版本中存在一个奇怪的错误,如果在命令行上指定 utf8,则会对已经编码为 utf8 的表进行双重编码,如果我没记错的话,这个问题在一年前或 5.0.51+ 中已修复。

如果您的字符集在表中正确指定,我认为您在进行转储时不需要使用默认字符集,因为它从表排序规则和字符集中获取。

答案2

仔细检查 中的排序规则和字符集server 1。它看起来是一种不同的格式,即使您iso-8859-1在导出时强制使用另一种格式(),这也行不通。在表和数据库等上仔细检查它。

如果这有帮助的话请告诉我。

相关内容