转换"错误"从旧服务器编码MySQL以纠正新服务器上的UTF-8

时间:2013-12-29 10:59:15

标签: mysql encoding utf-8

我在Web服务器上设置了一个显然编码错误的Web项目。但不知何故(我真的不知道为什么),我们想到了我们如何处理它并且编码对我们有用。 但是现在我们将数据移动到具有正确设置的UTF8数据库的新服务器并且出乎意料,编码是错误的。 我们如何“纠正”数据,是否有最佳实践?

示例 旧服务器:http://www.orat.io/stmt/200 新服务器:http://www.firefile.net/stmt/200

非常感谢!

1 个答案:

答案 0 :(得分:2)

这实际上发生在实践中 - 我有时看到它:-)通常会发生什么:

  • 数据库位于utf-8
  • 输入/输出在encoding1中 - 说它是iso-8859-2(即HTML中的元字符集)
  • 但是,因为前一个管理员不知道如何正确设置数据库连接编码(这是使用set names SQL命令指定的字符集),所以数据库连接配置为,如同< / em>输入/输出采用不同的编码2 - 比如iso-8859-1 - 默认在很多Linux系统上。

要从数据库中获取正确的数据,您必须以与之前相同的错误方式访问它 - 例如对于上面的示例,设置iso-8859-1编码,但实际上得到iso-8859-2。一切都“有效”,直到有人开始正确访问数据库。

您没有提供有关您的案例中的encoding1 / encoding2的详细信息,您可能不知道。因此,要么查看旧设置,要么尝试通过反复试验找出答案。

重新编码数据库的最简单方法可能是在编码2中执行mysqldump,然后声称它是编码1(只需将set names encoding1放在sql文件的开头)并通过获取sql文件将数据库导入空数据库。当然,所有数据库字段都始终保持utf-8

小心并使用PHPMyAdmin作为独立工具来查看数据库的“真实”状态。 :-)祝你好运。