4

我正在将我的 WordPress 博客和 phpBB 论坛迁移到新的托管服务器中。我正在使用 phpMyAdmin 从上一个站点的数据库中导入 SQL 脚本。

当我用 Kate 打开 .sql 脚本时,它说它使用 UTF8 作为编码。当我在新服务器中导入 sql 时,我在 phpMyAdmin 中有选择编码的选项,其中默认选择 utf8。

不过,当我完成导入数据库时​​,我直接在 phpMyAdmin 中阅读帖子文本,并看到诸如“é”、“ñ”等字符,这些字符尚未被“解释”并被替换为奇怪的字符。

我可以看到我的 WordPress 安装也无法正常工作。显然这个编码有问题,但我认为问题出在 MySQL 数据库或 phpMyAdmin 而不是 WordPress。

MySQL 的版本实际上是相同的,即 MySQL 5,但版本不同。还有,在迁移论坛数据库的时候没有问题,所以这个就更奇怪了……

我不知道如何解决这个问题......欢迎任何想法。

4

3 回答 3

10

您是否尝试过添加

SET NAMES 'utf8';

到你的 sql 转储?

一般来说,使用 utf8 或编码的事情是,为了成功,您必须确保:

  • 文件编码为 utf8 无签名
  • mysql服务器的默认编码设置为utf8
  • 连接是 utf8 (这就是为什么你把 SET NAMES 'utf8' 放到你的 sql 文件中)。
  • 所有表和列都有正确的编码和字符集
  • 你所有的 web 文件也必须是 utf8 编码的。而且只添加正确的标题是行不通的。您必须打开文件,检查编码是否为 utf8,如果不是,则剪切所有内容,将编码更改为 utf8,然后将所有内容粘贴回来。它不起作用,如果您只是更改编码并保存文件!
于 2008-12-06T18:08:20.180 回答
2

非常感谢你的回答。我找到了解决方案,我觉得以前没有意识到它真的很愚蠢。一切都应该正常工作:

- 文件用 utf8 编码 - 表用 utf8 声明:

SET character_set_client = utf8;
-MySQL 服务器配置了 utf8 等。

一开始我没有意识到我正在使用 cPanel 备份向导中的数据库备份。意识到这一点后,我在旧服务器上使用 phpMyAdmin 导出数据库,将其导入新服务器,然后,问题修复了。

phpMyAdmin 比 cPanel 更了解 phpMyAdmin :P 显然 cPanel 会导出脚本,以便将其与 cPanel 本身一起导入。这很可能也有效,但我更信任 phpMyAdmin。

非常感谢您的回答。

于 2008-12-06T20:16:41.433 回答
1

我刚刚遇到了同样的问题,因为我与它搏斗了大约一个小时,它破坏了我的许多网站,我想我会看看是否有其他人在努力解决它并发布解决方案:解决方案很简单是在导入时指定导入字符集。

如果您可以通过 SSH 访问您的主机,首先再次将所有表再次删除到新数据库中,然后在 SSH 会话中运行此命令(假设您的旧转储文件是olddatabase.dump.sql):

$ mysql -h host -u username -p password --default-character-set=utf8 database < olddatabase.dump.sql(用适当的值替换主机、用户名、密码和数据库)

这是解决问题的最简单、最直接的方法。

于 2009-12-25T08:11:14.967 回答