WordPress的mysql数据库编码转换之绝路招式!

编码

为什么要把数据库的编码转换这个问题我就不回答了,Mysql的默认编码是latin1,这就是瑞典人的狠呀,想全世界都是用这个标准,这为广大的中文用户带来了莫大的隐患和痛苦,不但查看数据库时一片乱码,而且给备份编辑工作带来极大困难。所以就要把编码转为UTF8。针对把数据库编码从latin1转换为utf8这个问题,网上已经有很多的文章,但我没有一个是成功的,也许是因为我的特殊性吧!

本人用WordPress自带的备份工具以及其它工具备份,导出来的数据总会有一些乱码,如分类信息会乱码,留言部份的数据会有一部份乱码,又有一部份是正常,文章正常显示。这也是为什么要转换为UTF8的原因之一。说到留言部份数据乱码,我还不得不提一下我留言部份的数据量就达到28M,我想这就是之前用Spam Karma2来防Spam的后果吧!它把所有的Spam都保存于留言部份的数据表当中,只是加上一个"Spam"的标号而已,并没有真正删掉Spam。用WordPress自带的Akismet不会出现这样的情况,由此也看得出Spam之多,话题偏了,归正题。

在看了土路的世界写的"mysql数据库编码转换之道"和Andy写的“WordPress数据库编码完美修正方案”后,本人想到的此招绝路招式,都说是绝路招式了,所以会有一定的自伤:只把文章内容的编码转换,留言信息及别的信息全都丢失。因为像我这样留言就占了28M的情况,乱码部份不可以可以一条条来删除的了。并且大多数据信息都是Spam。如果你的情况与我的不一样,可以参考土路的世界或是Andy的方法。

绝路招式:

第一步:管理后台-->选项-->输入-->Feeds(联合供稿)
把“显示最近:XX篇文章”设置为你现有的文章篇数,比喻你现已有275篇文章,那这里就填275。
把“每篇文章显示”设置为全文
把"页面和feeds的编码方式"设置为UTF-8.
更新选项

第二步:来到首页,点击你的RSS,这样就会现显出所有文章的RRS,如果你的文章数多的话,那就请稍等一会吧。完全显示后,把显示出来的RRS全部拷贝到记事本,以XML为后辍名保存(用记事本会显得慢,如果你数据量大的话,还是用EditPlus吧).如果你是拷贝到EditPlus的话,那记得用另存为,并且另存时把“转换器”设为UTF-8。如果不是的话导入后显示的是乱码。

第三步:用PHPMYADMIN来管理数据库,进入PHPMYADMIN后把数据库的编码设置为默认:utf8_general_ci(这一步不会,请参考MYSQL使用手册),这一步最在把留言部份的数据清空。

第四步:管理后台-->导入-->RSS-->在“浏览”找到刚本保存后辍名为XML的文件-->导入

第五步:进入PHPMYADMIN看看WordPress数据表后面的整理是不是utf8_general_ci了,浏览一下数据,看看全都正常显示,没有乱码了。如是正常显示的话,那就进入我们的最后一步吧

第六步:修改wp-includes/wp-db.php, 在第43行

$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);

的后面加入以下一句:

$this->query("SET NAMES 'utf8'");

到此为止,招式基本打完。本招式只当参考,不到万不得已的时候,请不要用。本招式最好用在全新安装,导入旧文章的。如果你只想把文章部份保留,别的数据都不要了也可以使用本招式。因为我的留言有太多的乱码了。数据编码转换在风险,请备份好数据。

WordPress的mysql数据库编码转换之绝路招式!》有一个想法

  1. 佐仔

    留言的数据之所以会出现一些乱码,可能是由于Pingback和Trackback造成的。当对方的数据库编码与你的不一样时,就会造成Pingback和Trackback错误,只是收录了,没有公布出来!

    回复

回复 佐仔 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注