首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

WordPress五种情况上中文乱码的解决办法

2012-08-30 
WordPress五种情况下中文乱码的解决方法声明:本文部分内容来自网络,笔者进行了汇总和整理。来源已经做了链

WordPress五种情况下中文乱码的解决方法


声明:本文部分内容来自网络,笔者进行了汇总和整理。来源已经做了链接,见下文。

?

1. Tags 第一个字符出现乱码

通常是因为安装或者升级了 All in One SEO 插件,或者是Platinum SEO Pack插件。

插件中会设置tags的第一个字符大写,而一个汉字等于两个西文字符,所以就会将第一个汉字的一半大写,造成了乱码。

解决方法(以All in One SEO 插件为例,来源网址):

1. 最简单的解决办法就是:进入Seo Pack设置,将Rewrite Title选择框取消选择,这样Seo Pack就不会重写标题,标题显示为Wordpress默认标题,就不会出现乱码了。

2. 如果想使用Seo Pack的标题重写功能,那么就需要修改Seo Pack的代码,将其中存在bug的地方修改掉,步骤如下:
进入插件->编辑,选择编辑All In One Seo Pack (SEO插件), 然后选择编辑文件:aioseop.class.php,(这样很难找到下面这个函数,还是将插件目录下面这个文件下到本地编辑吧)

找到函数:
function capitalize($s)
将下面的一行代码删除或注释掉:
$tokens[$key] = strtoupper(substr($tokens[$key], 0, 1)) . substr($tokens[$key], 1);
然后,将此文件中的函数:ucwords全部替换为:$this->capitalize

?

2. 目录第一个字符出现乱码

这个错误和插件无关,和WordPress的新版本对中文支持不太好有关

解决方法(来源网址):

打开wp-includes文件下的class-wp.php文件,搜索下一行代码(第142行)

1$pathinfo?=?$_SERVER['PATH_INFO'];

注释掉,另起一行加入下面代码(如果您想直接替换,也未尝不可):

1$pathinfo?= mb_convert_encoding($_SERVER['PATH_INFO'],?"UTF-8",?"GBK");

搜索下面代码,定位到第148行(因为上面加入了一行代码,如果class-wp.php从未修改过,那就是148-1=147行)

1$req_uri?=?$_SERVER['REQUEST_URI'];

注释掉。另起一行,加入如下代码:

1$req_uri?= mb_convert_encoding($_SERVER['REQUEST_URI'],?"UTF-8",?"GBK");

保存,二进制方式上传到服务器。看看你的中文链接、中文TAGS、中文标签是不是正常打开了?

?WordPress五种情况上中文乱码的解决办法

3. PageNavi 导致wordpress 3.2.1中文地址分页乱码,中文标签分页无法打开解决方法:(来源网址)找到插件目录wp-content/plugins/wp-pagenavi/下的core.php文件,搜索下面代码(164行)1return?"<a href='"?. esc_url( get_pagenum_link(?$page?) ) ."' class='$class'>$text</a>";

注释掉,另起一行加入

1return?"<a href='"?. esc_url( mb_convert_encoding(get_pagenum_link($page),?"UTF-8",?"GBK") ) ."' class='$class'>$text</a>";

保存,二进制方式上传到服务器。测试一下你的中文分页,应该可以正常打开了。

WordPress五种情况上中文乱码的解决办法

?

4.使用all-in-one-seo-pack插件, 当Tags页面出现404错误时,title的中文出现乱码找到插件目录wp-content/plugins/all-in-one-seo-pack/下的aioseop.class.php文件,搜索下面代码1} else if (is_404()) {

有两处,623行 806行,以623行为例,原代码如下

WordPress五种情况上中文乱码的解决办法

修改成

WordPress五种情况上中文乱码的解决办法

806行,做类似改动。

?

5.由于pre_match判断中文字符出错,导致一部分中文tags显示404错误

正常安装wordpress,解决了上述问题后,你会发现绝大多数中文tags是正常的。但极少数中文tags显示不正常。例如:标 ?/ ?加 ?等。这是由于preg_match判断中文的表达式出错。

解决方法:

在wp-include/query.php文件中,寻找?function &get_posts() 函数,里面有一句:

} else if (?preg_match(‘/[+\s]+/’, $q['tag'])?|| !empty($q['cat']) ) {

if (?preg_match(‘/[+\s]+/’, $q['tag'])?|| !empty($q['cat']) )

其中 Preg_match 函数判断中文的时候,出现错误。应该将上述红色字部分更换为

preg_match(‘/\+/’, $q['tag'])

mb_eregi(‘/[+\s]+/’, $q['tag'])

做了上述修改后,所有中文显示均正常。

?

作者:?谭砚耘@用户体验与可用性设计-科研笔记

版权属于:?谭砚耘 (TOTHETOP至尚国际?)

版权所有。转载时必须以链接形式注明作者和原始出处

如果你希望与作者交流,请发送邮件到?tanyanyun/at/163.com?别忘了修改小老鼠

热点排行