Tao道-博客黑洞

February 22nd, 2006

WordPress数据库恢复编码转换[解决乱码问题]

Posted by kunstao in wordpress教程

为了今后wordpress数据库备份方便,把数据库默认的latin 1 转换成了utf8

大致过程如下:

1.备份 http://www.sh18.org/blog/ 数据库

2.用 EditPlus 打开 http://www.sh18.org/blog/备份的数据库 文件,查找“DEFAULT CHARSET=latin1” 用“DEFAULT CHARSET=utf8”替换.

3.创建一个新的数据库,用phpadmin进入界面后,

(1).点击左边你的数据库名后,右上方会有“Operations/操作”按钮,进入后最下面有“Collation:/整理:  ”选项,选择 相应的utf8后按“go/执行”确认【这个步骤是把数据库默认编码设置成utf8】

(2).点击“Home  /主目录”按钮 ,返回主界面 更改“MySQL connection collation: /collation (校勘)字符集”为utf8_general_ci 【这个步骤有什么用不知道,反正做了没坏处】

参考文档

http://yanfeng.org/blog/585/

http://voivo.de/blog/374.html

http://www.zuola.com/weblog/?p=355

然后导入前面备份的数据库(修改过的,注意导入的时候选utf8)

4.更改WordPress程序中wp-includes/wp-db.php的文件:选择在56行处添加

$this->query(”SET NAMES ‘utf8′ “);

复制语句时小心字体哦,我复制的代码加入后报错,原来那些>”‘什么的都不正确。

更改后的情况是:
}
$this->query(”SET NAMES ‘utf8′ “);
$this->select($dbname);
}

5.更改 wp安装目录下的wp-config.php 文件,把里面数据库相应的参数修改为 新的数据库名字。

6.然后 登陆 www.sh18.org/blog 基本正常,发现文章的中文分类名出现“??”字符,进入后台,重新更改分类后一切正常.

7.发新贴看是否一切正常。。。。。

8.待测试。。。。

因为流量关系,为网站做了个镜像站点,等待流量快超标的时候做个域名转向来缓解压力。在新的服务器上安装 了Wordpress后,开始进行数据库操作:

1. 备份原来网站的数据库:操作很简单,进入PhpMyAdmin后选择导出,在表单选择框里选择全部。选择”另存为文件”中的”

2. 恢复备份数据库到新的服务器中:进入新服务
器的PhpMyAdmin,(因为已经在这里建立了Wordpress,所以已经存在一个新的数据库了),在”结构”中选择所有表单,然后在”选中项”中
选择”删除”,原有的数据库清空。然后在”SQL”中点击”浏览”选择刚才备份的数据库文件,点击”执行”即可。

可在这个时候出现了问题:总是说什么超出了Memory,或者说超过了30秒的限制,无法正常导入。导入数据库文件大小限制一般为2M,我的备份文件不过才800多KB,为什么不行呢?后来明白,可能是新的服务器连接速度有些慢,所以在进行导入时,总是超过了时间限制。

解决办法:备份数据库时,分几次备份不同的表单,而不是一次重复全部,就这样重复1,2两个步骤三次,总算把数据库正常导入了。

3. 站内链接调整:因为数据库相同,当然网站里所有站内链接也会和原来的相同,全部指向的还是原来的服务器地址。在PhpMyAdmin里选择数据库中的”wp_options“表单,点击”浏览”然后按”option_name”排列主键顺序,找到”option_name”键值为”siteurl”一项,点击”编辑”按钮,把里面的原来网站链接地址改为新的。然后找到”home”一项,同样编辑把链接改成新的网址。

所有数据库操作完成,
登陆网站查看,一下子傻了,除了我在侧边栏里写的自我简介那几个字是正常汉字,其它全以”?”显示。难道字符设置不对?不可能啊数据库是原来的,当然字符
设置也是原来的”utf-8″。上网找答案,原来以前MySQL版本为4.0的转到4.1或者更高版本时,会出现乱码。上服务器的说明中查看,原来老的服
务器MySQL版本为4.0,而新的服务器版本为5.0,晕哦,可真先进。继续google,在”桑林志“的”MySQL 4.1x 中文乱码问题“中找到了解决方案。

1. 设置数据库的”collation”为”utf8_general_ci”:因为在新的服务器中建立数据库时,没有指定其为utf-8,更没设定collation,所以需要先设定数据库的字符集。

执行命令:
alter database myblog
character set utf8;

然后再在”操作”或者数据库PhpMyAdmin的登陆页面中设定collation为”utf8_general_ci”。

2. 更改WordPress程序中wp-includes/wp-db.php的文件:我是选择了在56行处,而不是44行处(桑林志的做法)加入了如下语句:

$this->query(”SET NAMES ‘utf8′”);

复制语句时小心字体哦,我复制的代码加入后报错,原来那些>”‘什么的都不正确。

再次登陆网站查看,终于一切正常!!!整个操作时间耗费了大概6个小时,主要是网上查找解答太费时间,而且在设定collation时麻烦不小,因为我原来的服务器竟然关闭了调整Collation的命令。显示为:”使用链接表的额外特性尚未激活。要查出原因,请单击此处。”,还好它默认为字符集为”UTF-8″不然估计我的数据库是无论如何都不能恢复到更高版本的MySQL里了。

随机文章推荐:

22 Responses to ' WordPress数据库恢复编码转换[解决乱码问题] '

Subscribe to comments with RSS or TrackBack to ' WordPress数据库恢复编码转换[解决乱码问题] '.

  1. Blogging Pro China » Blog Archive » WordPress数据库恢复编码转换[解决乱码问题] said:

    [...]   WordPress数据库恢复编码转换[解决乱码问题],为了今后wordpress数据库备份方便,把数据库默认的latin 1 转换成了utf8。 database mysql utf8 [...]

    February 22nd, 2006 at 9:55 am

  2. TechPush said:

    [...] 由于Dreamhost默认的数据库字符编码为Latin1而不是utf8,这样当你撰写中文文章时,尽管PHP的解析没问题,站点上可以看到正常显示中文,但如果你进入PHPMyAdmin,就会发现那些中文都变成了乱码,这样会导致数据库备份无法显示中文,也就失去了意义(当你导入以前站点备份的数据(通常编码为Utf8)时,也会出现同样的问题),解决办法可以参考这篇文章:WordPress数据库恢复编码转换[解决乱码问题]。里面已经说得很详细了,对于像我这样刚刚使用Dreamhost服务的人来说很有用,这里我认为有两步最为关键: [...]

    March 27th, 2006 at 2:34 pm

  3. Sumnny said:

    [...] 更新:WordPress数据库恢复编码转换[解决乱码问题] [...]

    May 10th, 2006 at 5:08 pm

  4. xLight的蓝闪小窝 » links for 2006-05-12 said:

    [...] Tao道-博客黑洞 » WordPress数据库恢复编码转换[解决乱码问题] (tags: MYSQL Charset) [...]

    May 12th, 2006 at 2:59 pm

  5. 时光漫步 » links for 2006-07-23 said:

    [...] Tao道-博客黑洞 » WordPress数据库恢复编码转换[解决乱码问题] (tags: wordpress 乱码 数据库) [...]

    July 23rd, 2006 at 8:47 pm

  6. 时光漫步 » Blog Archive » 关于数据库导入乱码的问题 said:

    [...] 参考2:http://tao.kaoart.info/cms-software-doc/wordpress-about/kunstao/2006/554/ [...]

    July 28th, 2006 at 12:10 pm

  7. 雙葉 » 我又回来了 said:

    [...] 同时也对zola不厌其烦解决我的提问表示感谢,同时对http://tao.kaoart.info/cms-software-doc/wordpress-about/kunstao/2006/554/, http://blog.manboo.info/224.htm表示感谢,感谢上述两位解决了我数据转入乱码的问题,虽然我没有当面请教只是通过他们的blog看到相关信息。要感谢的还有我的父母以及姐姐,当然还有CCTV/MTV…… [...]

    July 30th, 2006 at 11:59 pm

  8. 开发者社区 said:

    @mysql_query(“SET NAMES ‘utf8′”);
    不错,这句简直就是万能语句,只要保证页面用u8,数据库u8,很多问题都能解决,zen-cart,joomla都很好用,呵呵

    July 31st, 2006 at 10:14 am

  9. 双叶@Donews » links for 2006-07-31 said:

    [...] Tao道-博客黑洞 » WordPress数据库恢复编码转换[解决乱码问题] (tags: wordpress) [...]

    July 31st, 2006 at 8:48 pm

  10. y0ungs said:

    我想问一下。我把我的英文模板的一些php文件换成了UTF8的编码 是不是就依偎着所有的php文件都要换成这个编码呢?是不是还要在程序的某个地方设置一下整个blog的编码?
    我现在发现我的feed也有点问题,feedsky和feedburner已经很久没有抓取过我的feed了
    请给我邮件或者到我的blog留言好吗?我不一定能及时看到你的回复。谢谢

    August 8th, 2006 at 7:03 am

  11. Nickcheng.LOG » Blog Archive » 搬家基本完毕 said:

    [...] 和我猜测的一样, DB的搬移是比较费时的工作! 原来在edong的空间的mysql版本是3.2, 而bluehost新空间的版本是4.2的, 这版本的跨越可不是数字的变化这么简单! mysql在跨越4.1版本的时候增加了数据库的Collection属性. 通俗的说, 这个属性控制了数据库中字符的编码类型, 如果配置的不当, 就会出现汉字变成乱码的情形! 呵呵, 我有幸遇到了! 不过还好网民的力量是无穷的, 在Google了一圈以后, 我还是找到了解决方法! 看这篇文章 [...]

    September 22nd, 2006 at 12:38 pm

  12. Nickcheng.LOG » Blog Archive » Wordpress升级到2.0.5 said:

    [...] 参考之前自己参考过的那篇文章. [...]

    October 30th, 2006 at 11:42 am

  13. 嘿嘿 » 博客文章 » 乱码 said:

    [...] 由于Dreamhost默认的数据库字符编码为Latin1而不是utf8,这样当你撰写中文文章时,尽管PHP的解析没问题,站点上可以看到正常显示中文,但如果你进入PHPMyAdmin,就会发现那些中文都变成了乱码,这样会导致数据库备份无法显示中文,也就失去了意义(当你导入以前站点备份的数据(通常编码为Utf8)时,也会出现同样的问题),解决办法可以参考这篇文章:WordPress数据库恢复编码转换[解决乱码问题]。里面已经说得很详细了,对于像我这样刚刚使用Dreamhost服务的人来说很有用,这里我认为有两步最为关键: [...]

    November 2nd, 2006 at 2:27 pm

  14. 李杰的博客 | jaylee’s blog : 为Wordpress搭建一个镜像 said:

    [...] WordPress数据库恢复编码转换[解决乱码问题] [...]

    January 27th, 2007 at 7:36 pm

  15. 我的WP升级恢复手记 at Pinsen’s blog said:

    [...] 反正大概就是这么个事,想着挺烦心的,越说越不是那么回事,差不多就这样了。本也不想早上一起来就弄的,可总觉得摆在一边更不像回事,就再弄弄,忽然发现自己很笨为什么发要钉死在E-space的那篇博文上呢,看来前天晚上的确是弄糊涂了,就又去搜了搜数据库恢复的日志,果不其然Tao道那找到一篇相似的数据库恢复编码转换的文章,文后的那一段应该是借用了E-space的文章,重要的是文前面的那一段对我很有用。之后的过程就和他文中写的差不多了。操作流程就不罗嗦了,Tao道那篇文章里都有。对我来说最重要的就是下面这一步了。 [...]

    July 28th, 2007 at 10:28 pm

  16. 我的WP升級恢復手記 at Pinsen’s blog said:

    [...] 反正大概就是这么个事,想着挺烦心的,越说越不是那么回事,差不多就这样了。本也不想早上一起来就弄的,可总觉得摆在一边更不像回事,就再弄弄,忽然发现自己很笨为什么发要钉死在E-space的那篇博文上呢,看来前天晚上的确是弄糊涂了,就又去搜了搜数据库恢复的日志,果不其然Tao道那找到一篇相似的数据库恢复编码转换的文章,文后的那一段应该是借用了E-space的文章,重要的是文前面的那一段对我很有用。之后的过程就和他文中写的差不多了。操作流程就不罗嗦了,Tao道那篇文章里都有。对我来说最重要的就是下面这一步了。 [...]

    July 29th, 2007 at 7:25 pm

Leave a reply

You must be logged in to post a comment.

本日推荐网站