日期:2014-05-17 浏览次数:20530 次
<?php echo mb_strlen("我的名字") . "<br/>"; //12 echo mb_strlen("我的名字","UTF-8") . "<br/>"; //4 echo mb_strlen("我的名字","GBK") //6 ?>
echo mb_strlen("我的名字") . "<br/>"; //12 echo mb_strlen("我的名字","UTF-8") . "<br/>"; //4 echo mb_strlen("我的名字","GBK") //6
------解决方案--------------------
首先你的文件编码一定是utf-8,而且你的mb_internal_encoding是类似于ISO-8859-1
然后要知道1个utf8汉字为3字节,gb是2字节,mb_strlen把多字节字算作1,所以会得出
<?php
echo mb_strlen("我的名字") . "<br/>"; //未给定编码,按默认 ISO-8859-1 计算,一个utf8汉字为3
echo mb_strlen("我的名字","UTF-8") . "<br/>"; //给定正确编码,一个汉字为1
echo mb_strlen("我的名字","GBK") //给定错误编码,GBK 一个汉字算2,但你的文件是utf8,所以为4 * 3 = 12字节 / 2 = 6个gbk字
?>