• 售前

  • 售后

热门帖子
入门百科

wordpress中文截断产生乱码办理方法

[复制链接]
我放心你带套猛 显示全部楼层 发表于 2021-8-15 19:23:33 |阅读模式 打印 上一主题 下一主题
但是暴虐的现实是大部门的模板都照旧出于老外之手,老外在做模板的时候一般只会思量到显示正常即可,而我们如果用中文来写博客毕竟和英文情况有所差异,这样可能会出现很多的问题,比如字体巨细,乱码,这些都要手动调整。

话说调整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:本人菜鸟一只。高手轻点拍砖。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作