//gbk编码下$s='中文测试';echomb_strlen($s,'utf-8');echostrlen(iconv('gbk','utf-8',$s));1.为什么值不相等2.strlen计算的是字符串的字节数还是字符数?3.mb_strlen计算的是什么?
2 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
$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
TA贡献1840条经验 获得超5个赞
1.楼主的mb_strlen()用法是不是有点小问题。mb_strlen是根据字符串的编码方式来计算字符数。楼主是否是想用下面的代码://gbk编码下$s='中文测试';echomb_strlen($s,'gbk');echomb_strlen(iconv('gbk','utf-8',$s),'utf-8');长度都是4,所以首先确保传给mb_strlen的编码方式正确。2.strlen()只计算字节数
添加回答
举报
0/150
提交
取消