有关中文的问题。PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。
';
echo $str;
$lens = (strlen($str) + mb_strlen($str,'UTF8')) / 2;
echo '
';
echo '标准算法长度:'.strlen($str);
echo '
';
echo 'UTF8计算中文长度:'.mb_strlen($str,'UTF8');
echo '
';
echo '正确的算法计算:'.$lens;
?>
浏览器返回信息
真正听得进去别人说话,其实是要
标准算法长度:45
UTF8计算中文长度:15
正确的算法计算:30
谈谈GB2312
对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。