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

wordpress中文截断产生乱码解决方法,第1张

概述wordpress的海量模板是它的亮点之一,国内众多高手设计的模板已经非常漂亮。

可是残酷的现实是大部分的模板都还是出于老外之手,老外在做模板的时候一般只会考虑到显示正常即可,而我们如果用中文来写博客毕竟和英文环境有所差别,这样可能会出现很多的问题,比如字体大小,乱码,这些都要手动调整。 话说调整CSS很多人都已经是轻车熟路了,本文不讨论。 不过可能大家会遇到类似下图的现象: 产生乱码的原因 这种乱码现象一般是出现在正文截断的时候,因为wordpress模板的字符集是UTF-8,它对于英文来说是一个字母一个字节(8位)来编码,而中文却是一个汉字三个字节(24位)来编码。所以截断的函数只会判断在多少字节的地方去截,如果到了那个地方一个汉字只显示了三分之一或者三分之二的时候,那个汉字就不能完整显示,而函数又不能很智能的多截一个字节或者少截一个,怎么办?于是就产生了乱码。这个问题相信在很多有类似功能的国外模板上都会出现,这不是数据库的错,也不是字符集的问题,只是因为制作者在编写模板的时候并没有考虑到中文字符可能产生的问题。 所以,我们要替换截断的函数。简单来说,两步就可以搞定。 第一步 将以下两个函数写进主题所附带的 functions.PHP 文件中 <div id="phpcode2"> 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,$max_char+1); $limiter = utf8_conver($limiter); echo $limiter; echo $moretext; if ($morelink_text != '') { echo ' <a href="'; echo the_permalink(); echo '">'.$more_link_text.''; } } 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,$i)); if (($ch & 192)==192) return(substr($str,$i)); } return($str.$hex); }

总结

以上是内存溢出为你收集整理的wordpress中文截断产生乱码解决方法全部内容,希望文章能够帮你解决wordpress中文截断产生乱码解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/1027799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存