WordPress五种情况下中文乱码的解决方法
声明:本文部分内容来自网络,笔者进行了汇总和整理。来源已经做了链接,见下文。
?
通常是因为安装或者升级了 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
?
这个错误和插件无关,和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、中文标签是不是正常打开了?
?1
return
?"<a href='"
?. esc_url( get_pagenum_link(?
$page
?) ) .
"' class='$class'>$text</a>"
;
注释掉,另起一行加入
1
return
?"<a href='"
?. esc_url( mb_convert_encoding(get_pagenum_link(
$page
),?
"UTF-8"
,?
"GBK"
) ) .
"' class='$class'>$text</a>"
;
保存,二进制方式上传到服务器。测试一下你的中文分页,应该可以正常打开了。
?
1
} else if (is_404()) {
有两处,623行 806行,以623行为例,原代码如下
修改成
806行,做类似改动。
?
正常安装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?别忘了修改小老鼠