我在 Web 服务器上设置了一个 Web 项目,编码明显错误。但不知何故(我真的不知道为什么),我们想出了如何处理它并且编码对我们有用。
但现在我们将数据移动到具有正确设置的 UTF8 数据库的新服务器,令人惊讶的是,编码是错误的。
我们如何“纠正”数据,有什么最佳实践吗?
Example旧服务器:http://www.orat.io/stmt/200 http://www.orat.io/stmt/200新服务器:http://www.firefile.net/stmt/200 http://www.firefile.net/stmt/200
多谢!
这实际上发生在实践中 - 我有时见过它:-)通常会发生什么:
- 数据库位于
utf-8
- 输入/输出采用编码1 - 说是
iso-8859-2
(即 HTML 中的元字符集)
- 但是,因为以前的管理员不知道如何正确设置数据库连接编码(这是使用指定的字符集)
set names
SQL命令),数据库连接配置完毕as if输入/输出采用不同的编码2 - 比如说iso-8859-1
- 许多 Linux 系统上的默认设置。
要从数据库中获取正确的数据,您必须以与之前相同的错误方式访问它 - 例如对于上面的例子,设置iso-8859-1
编码但实际上得到iso-8859-2
。一切都“有效”,直到有人开始正确访问数据库。
您没有提供有关您的案例中的encoding1/encoding2 的足够详细信息,并且您可能不知道。因此,要么查看旧的设置,要么尝试通过反复试验来找出答案。
重新编码数据库的最简单方法可能是要做mysqldump
在encoding2中,然后声明它是encoding1(只需将set names encoding1
在 sql 文件的开头)并通过 source-ing sql 文件将数据库导入到一个空数据库中。当然,所有数据库字段都保留在utf-8
每时每刻。
请小心,使用 PHPMyAdmin 作为独立工具来查看数据库的“真实”状态。 :-) 祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)