洛杉矶MC机房 高速低价18元起

DIYVM

wordpress中文截断产生乱码解决方法

提示:如果官网是英文页面,建议使用谷歌浏览器能同步翻译页面。点击下载【谷歌浏览器最新绿色便携版】
注意:部分文章发布时间较长,可能存在未知因素,购买时建议在本站搜索商家名称,先充分了解商家动态。
交流:唯一投稿邮箱:hostvps@88.com。

可是残酷的现实是大部分的模板都还是出于老外之手,老外在做模板的时候一般只会考虑到显示正常即可,而我们如果用中文来写博客毕竟和英文环境有所差别,这样可能会出现很多的问题,比如字体大小,乱码,这些都要手动调整。 

话说调整CSS很多人都已经是轻车熟路了,本文不讨论。 
不过可能大家会遇到类似下图的现象: 
产生乱码的原因 
这种乱码现象一般是出现在正文截断的时候,因为Wordpress模板的字符集是UTF-8,它对于英文来说是一个字母一个字节(8位)来编码,而中文却是一个汉字三个字节(24位)来编码。所以截断的函数只会判断在多少字节的地方去截,如果到了那个地方一个汉字只显示了三分之一或者三分之二的时候,那个汉字就不能完整显示,而函数又不能很智能的多截一个字节或者少截一个,怎么办?于是就产生了乱码。这个问题相信在很多有类似功能的外模板上都会出现,这不是数据库的错,也不是字符集的问题,只是因为制作者在编写模板的时候并没有考虑到中文字符可能产生的问题。 

所以,我们要替换截断的函数。简单来说,两步就可以搞定。 

第一步 
将以下两个函数写进主题所附带的 
functions.php 
文件中 

复制代码

代码如下:

function Limit_Char($max_char = 200, $more_text = '…', $more_link_text = '', $limit_type = 'content') { 
if ($limit_type == 'title') { $limiter = get_the_title(); } 
else { $limiter = get_the_content(); } 
$limiter = apply_filters('the_content', $limiter); 
$limiter = strip_tags(str_replace(']]>', ']]>', $limiter)); 
if (strlen($limiter) > $max_char) { 
$limiter = substr($limiter, 0, $max_char+1); 
$limiter = utf8_conver($limiter); 
echo $limiter; 
echo $more_text; 
if ($more_link_text != '') { 
echo ' <a href="'; 
echo the_permalink(); 
echo '">'.$more_link_text.'</a>'; 

} else { 
echo $limiter; 


function utf8_conver($str) { 
$len = strlen($str); 
for ($i=strlen($str)-1; $i>=0; $i-=1){ 
$hex .= ' '.ord($str[$i]); 
$ch = ord($str[$i]); 
if (($ch & 128)==0) return(substr($str,0,$i)); 
if (($ch & 192)==192) return(substr($str,0,$i)); 

return($str.$hex); 


第二步 
把模板文件中比如 
index.php 
中将截断函数替换成新的。 

复制代码

代码如下:

<?php Limit_Char(200); ?> 
<!– 200是你需要截断多少字节的长度,根据实际情况修改。–> 


修改完成,大功告成啦。理论上用这个办法,只要是截断的问题都可以得到解决。 
BTW:本人菜鸟一只。高手轻点拍砖。

About 贝壳

【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

本文链接:贝壳主机网 » wordpress中文截断产生乱码解决方法

分享到: 生成海报
香港/美国/国内高速VPS
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活