wordpress文字截断乱码writer无法更新主题

作者:admin发表时间:2011-2-2 评论:0 点击 3,421+

制作主题时文字截断是必不可少的,但有时出现乱码也是很纠结的,但有时主题不对,离线编辑器又无法使用。是非常非常老火。下面来说说一般乱码怎么解决。

一般情况Wordpress模板的字符集都是使用UTF-8编码,对于英文来说是一个字母一个字节(8位)来编码英文站是不会出现乱码,而中文却是一个汉字三个字节(24位)来编码计算 这样难免会出现乱码问题。所以截断的函数只会判断在多少字节的 地方去截,如果到了那个地方一个汉字只显示了三分之一或者三分之二的时候,那个汉字就不能完整显示,而函数又不能很智能的多截一个字节或者少截一个,怎么办?于是就产生了乱码。(有时汉字刚好就那么多个字节就不会出现乱码,遇巧的事没有那么多!)这个问题在很多有类似功能的模板上都会出现,这不是数据库的错,也不是字符集的问题,只是因为制作者在编写模板的时候并没有考虑到中文字符可能产生的问题。这些都是废话。

一般主题出现乱码,首先看哈你主题的编码是不是统一的utf-8编码,如果不是请校正编码,推荐使用网页制作软件打开编辑,例如常用的Adobe Dreamweaver CS5、EditPlus都是比较不错的,请不要用记事本修改编码。如果编码没有问题那应该就是函数使用问题了。

wirter-wp1

一般都用一些文字截断函数。

你可以使用如下这个函数就可以直接截断文字了,但空间必须打开mb_string extension服务,那如果没打开就必然出现乱嘛,许多主题都用了这个函数,感觉这个不理想,如果你要看你空间是否启用mb_string 函数服务你可以使用php探针查看。

   1: <?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 300,""); ?>

法二

在function.php文件里加入函数,然后调用。

首先在function.php里加入如下函数

function cut_str($sourcestr,$cutlength)
 
{
 
$returnstr='';
 
$i=0;
 
$n=0;
 
$str_length=strlen($sourcestr);
 
while (($n<$cutlength) and ($i<=$str_length))
 
{
 
$temp_str=substr($sourcestr,$i,1);
 
$ascnum=Ord($temp_str); 
 
if ($ascnum>=224) {
 
$returnstr=$returnstr.substr($sourcestr,$i,3);
 
$i=$i+3;
 
$n++;
 
}
 
elseif ($ascnum>=192) 
 
{
 
$returnstr=$returnstr.substr($sourcestr,$i,2);
 
$i=$i+2;
 
$n++;
 
}
 
elseif ($ascnum>=65 && $ascnum<=90) 
 
{
 
$returnstr=$returnstr.substr($sourcestr,$i,1);
 
$i=$i+1;
 
$n++;
 
}
 
else
 
{
 
$returnstr=$returnstr.substr($sourcestr,$i,1);
 
$i=$i+1;
 
$n=$n+0.5;
 
}
 
}
 
if ($str_length>$cutlength){
 
$returnstr = $returnstr . "..."; 
 
}
 
return $returnstr;
 
}

然后在需要的地方调用如下函数

<?php echo cut_str(strip_tags(apply_filters('the_content', $post->post_content)),300,""); ?>

还有可以这样写还是一样在functions里加入如下函数

function dm_strimwidth($str ,$start , $width ,$trimmarker ){
 
$output = preg_replace('/^(?:[\0-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\0-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
 
return $output.$trimmarker;
 
}

在调用的地方写入下面函数

<?php echo dm_strimwidth(strip_tags($post->post_content),0,300,'<a href="'.get_permalink().'">. . . . . . .</a>');?>

如上函数仅供参考,如有不当的地方自己修改。

另外的方法请查考

https://log.pub/wordpress-homepage-truncation-appear-garbled-solution.html

另外如果你函数使用不当,第三方离线编辑器有可能无法使用,会出现错误

如果是函数问题,那就 使用最后推荐的函数,方可解决,如果不是函数问题

请查考

WordPress Live Writer 无法安装的解决办法

https://log.pub/wordpress3-0-1-version-of-windows-live-necessity-cannot-install-solution-2.html

wirter-wp2

wirter-wp3

请一个地方一个地方修改后再试,看是哪点的问题,这样好快速的解决问题。

如有不当的地方还请理解,函数可以自己修改。大家有什么问题请留言。

顶一下 0 踩一下 0

你可能对以下内容感兴趣!

  1. 谷歌打不开,wordpress后台反应慢
  2. wordpress免费的备份插件BackUpWor...
  3. 谈一谈让wordpress更安全
  4. wordpress添加自定义默认头像
  5. wordpress本地测试站开启伪静态
  6. 修改wordpress官方twentyeleven...
  7. 给wordpress友情链接页面添加Favicon...
  8. JQuery和CSS 版wordpress 弹性伸...

发表回复

*

w_0002.gif w_0009.gif w_0007.gif w_0011.gif w_0005.gif w_0008.gif w_0010.gif w_0003.gif w_0012.gif w_0001.gif w_0006.gif