WordPress字数截断或搬家乱码问题解决方案

文章截断使用的是截取函数实现的地方,而WordPress模板的默认字符集是UTF-8,但是它对于英文来说是一个字母一个字节(8位)来编码,而中文却是一个汉字三个字节(24位)来编码。
代码是这样写的:

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

解决的办法有两个:
1、开启mb_string extension
如果你是自己的服务器,可以更改apache配置,可以将mb_string extension设置为on。
2、设置字符集
将代码加上UTF-8参数,代码就变成了:

1
<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 250,"...",'utf-8'); ?>

这样就解决了这个WordPress中mb_strimwidth函数中文截断产生乱码的问题。

相关:
还有一种情况,就是WordPress网站搬家后导入数据,整站乱码,我用过一种方法解决掉了,在WordPress的根目录wp-config.php文件里面大概30行位置找到下面的代码。

1
2
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

改成

1
2
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', '');

不指定编码。

Leave a Reply

You must be logged in to post a comment.

RSS feed for comments on this post. TrackBack URL