我在Web服务器上设置了一个显然编码错误的Web项目。但不知何故(我真的不知道为什么),我们想到了我们如何处理它并且编码对我们有用。 但是现在我们将数据移动到具有正确设置的UTF8数据库的新服务器并且出乎意料,编码是错误的。 我们如何“纠正”数据,是否有最佳实践?
示例 旧服务器:http://www.orat.io/stmt/200 新服务器:http://www.firefile.net/stmt/200
非常感谢!
答案 0 :(得分:2)
这实际上发生在实践中 - 我有时看到它:-)通常会发生什么:
utf-8
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作为独立工具来查看数据库的“真实”状态。 :-)祝你好运。