MySQL 5的UTF8问题

时间:2008-12-06 17:49:19

标签: mysql encoding utf-8 phpmyadmin

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

当我用Kate打开.sql脚本时,它说它使用UTF8作为编码。当我在新服务器中导入sql时,我在phpMyAdmin中可以选择编码,默认情况下选择utf8。

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

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

MySQL的版本几乎相同,MySQL 5,但是版本不同。此外,在迁移论坛数据库时没有问题,所以这甚至是陌生人......

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

3 个答案:

答案 0 :(得分:10)

您是否尝试过添加

SET NAMES 'utf8';

到你的sql转储?

utf8或编码通常是为了成功,你必须确保:

  • 文件编码为utf8,无签名
  • mysql服务器的默认编码设置为utf8
  • 连接是utf8(这就是你将SET NAMES'utf8'放入你的sql文件的原因。)
  • 所有表和列都具有正确的编码和字符集
  • 您的所有网页文件也必须经过utf8编码。并且只是添加正确的标头不起作用。您必须打开文件,检查编码是否为utf8,如果没有,请切断所有内容,将编码更改为utf8并将所有内容粘贴回来。如果您只是更改编码并保存文件,它就不起作用了!

答案 1 :(得分:1)

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

-File用utf8编码 -tables用utf8声明:

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

我首先没有意识到的是我正在使用来自cPanel备份向导的数据库备份。一旦我意识到这一点,我在旧服务器上使用phpMyAdmin导出数据库,将其导入新服务器,并解决问题,修复问题。

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

非常感谢您的回答。

答案 2 :(得分:1)

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

如果您具有对主机的SSH访问权限,请先再次在新数据库中删除所有表,然后在SSH会话中运行此命令(假设您的旧转储文件为 olddatabase.dump.sql ):

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

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