我正在尝试导入一个大型 SQL 文件;由一台服务器上的mysqldump创建,然后用iconv转换;使用这些命令:
$ mysqldump -uxxx -p xxx > data.sql
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT data.sql data.iconv.sql
我注意到数据库中的“\x91”在转储中变成了“\xc3\x82\xc2\x91”,因为 mysqldump 试图将所有内容都转换为 utf-8。我用 iconv 将它转换回“\x91”。如果我不转换它们,它们最终会在新服务器上成为“\xc2\x3f”;而不是我们现在的“\x3f”。
因此,如前所述,cp1252 编码有一些独特的字符,例如“\x91”和“\x92”。这两个字符在新数据库中都变成了“\x3f”;这是我用来导入的命令:
$ /opt/mysql5/bin/mysql -uxxx -p -Dxxx < data.iconv.sql
任何人都知道这是怎么发生的以及如何防止它发生?知道了这一点,我应该能够完全按原样迁移数据。
额外的信息:
我将此来源用于 iconv-things。如您所见,在此页面上,另一个人也遇到了 cp1252 的问题;也许这就是原因。
服务器版本是:
旧主机:Ver 10.10 Distrib 5.0.18,适用于 pc-linux-gnu (i486) 新主机:Ver 10.11 Distrib 5.0.51,适用于 pc-linux-gnu (i686)