php的strlen和mb_strlen结果不同

//gbk编码下
$s='中文测试';
echomb_strlen($s,'utf-8');
echostrlen(iconv('gbk','utf-8',$s));
1.为什么值不相等
2.strlen计算的是字符串的字节数还是字符数?
3.mb_strlen计算的是什么?
拉丁的传说
浏览 419回答 2
2回答

神不在的星期二

$s里面有四个宽字符由于你是gbk环境下的所以占8个字节如果你把它转成utf-8编码的将会占12个字节strlen()返回占多少个字节mb_strlen()返回实际为多少个字符如果是宽字符的话他会当成长度为一来计算所以下面的代码//gbk$s='中文测试';$s_u8=iconv('gbk','utf-8',$s);var_dump(strlen($s),strlen($s_u8),mb_strlen($s,'gbk'),mb_strlen($s_u8,'utf-8'));结果依次是8,12,4,4貌似你第二句把编码写错了但是写错了也能得到一样的结果。。不知道为什么

慕斯709654

1.楼主的mb_strlen()用法是不是有点小问题。mb_strlen是根据字符串的编码方式来计算字符数。楼主是否是想用下面的代码:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript