修改feeds输出编码解决加载wordpress汉化语言包乱码问题

今天也是闲来找事,被同事捉到让我把他放在英国的一个英文网站做下升级,没办法,意志不坚定,一番“威逼利诱”之下,不得不“屈服”,操刀上马开始升级征程。

程序是wordpress的,版本没注意是哪个版本,但wordpress好就好在不管逮住哪个版本,只要覆盖升级了以后,升级向导程序都能给升级上去,起码我是这样认为的。

安全起见,把站从英国先下载下来;网站文件比较少,打包就一会就下载下来了,数据库比较大,将近三万篇文章,如果用wp-db_backup来备,恐怕会比较慢并且有可能超时。照例还用“帝国备份王”,几百K,上传下去,配置好数据库连接,备份,十几秒种备份完毕,下载。

在本地搭建Amp环境,用的是“APMServ5.2.6”,用phpmyadmin新建一个数据库后,用ebak恢复数据库,修改wp-config.php的数据库连接参数,前台正常,后台登陆正常;然后到wordpress下载官方的2.7英文版本,覆盖,登陆后台,根据提示,升级,升级时提示有关“google-sitemap-generator.2.7.1”插件错误,删除此插件,顺利登陆后台。奇怪,这个插件怎么会报错呢?

其他设置就不多说了,以前讲过,英文水平不是太熟练,因此后台英文很多设置看着比较费劲,于是想到暂时找一个wordpress的中文语言包,到http://code.google.com/p/wordpresschina/downloads/list下载中文语言包,放在wp-content目录的languages目录里面。在根目录的wp-config.php文件中,修改“define (‘WPLANG’, ”);”为“define (‘WPLANG’, ‘zh_CN’);”,注意大小写。

但在刷新后台时,发现后台出现乱码现象,不过这个乱码现象可以明显区分出是界面乱码,不是数据库输出乱码。在ie调试下,通过右键选择“utf-8”编码浏览正常,依此看来,是网页宣告编码有问题。右键查看后台网页源代码,发现:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

怎么看怎么找不到utf-8的声明,只是想不到这个编码在哪里修改,难道需要修改head.php文件?不会吧,wordpress是出了名的标准,应该不会让去修改源代码。到阿江的群里面问下,果然有人确定“后台有修改的地方”,找了找,只发现有“read阅读”设置那里有一个设置feeds输出编码的地方,这个地方填写的就是“iso-8859-1”,在群里面也说了下,马上就有群友确定“pages编码和feeds输出编码是一样的”,也就是这个地方的设置也决定着pages的输出设置,马上修改为“utf-8”,这也是wordpress后台推荐的设置,刷新后台,中文界面一切ok!网页源代码中已经更改:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

注:iso-8859-1被称为是西欧语言,以上错误现象,比如GB2312中有一个汉字“李”,其编码为“C0EE”,欲转化为ISO8859-1编码。步骤为:先把“李”字转化为Unicode,得到“674E”,再把“674E”转化为ISO8859-1字符。当然,这个映射不会成功,因为ISO8859-1中根本就没有与“674E”对应的字符,所以就造成了乱码现象。

至于wordpress的数据库转换、搬家乱码问题,除了用帝国备份王来避免以外,用以下方法也可以完善解决:

修改用WP-DB Backup导出的文件,把DEFAULT CHARSET=latin1替换为DEFAULT CHARSET=utf8,重新导入,一切OK,Collation也为utf8_general_ci,然后再修改wp-includes/wp-db.php

$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
//加入以下一行
$this->query(”SET NAMES ‘utf8′”);

一切OK!

从此以后,wordpress前台、后台、模板界面、数据库输出,一切乱码问题皆无忧! 

2 thoughts on “修改feeds输出编码解决加载wordpress汉化语言包乱码问题

Comments are closed.