PHP-php strlen 计算字节与字符 与 编码的问题
来说说我的一些观点,有错误请指出
首先一个文件只有一个编码
//例1:
//文件utf8编码下
$str = '测试123';
echo strlen($str);//9
echo mb_strlen($str,'ISO-8859-10');//9
echo mb_strlen($str);//9
//例2:
//文件gbk编码下
$str = '测试123';
echo strlen($str);//7
echo mb_strlen($str,'ISO-8859-10');//7
echo mb_strlen($str);//7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
php这个语言是这样的, 字符串由字符构成, 字符即是字节:
A string is series of characters, where a character is the same as a byte. This means that PHP only supports a 256-character set, and hence does not offer native Unicode support.
ISO-8859系列编码为单字节编码, 所以你看到用这种解码似乎是字节数相符.
UTF8中, 汉字不一定是三个字节, 翻翻码表, 我记得很多生僻字是4个字节的.
mb_strlen($str)不加第二个参数, 用internal character encoding, 我的环境中默认是iso-8859-1.
每个字符串有各自对应的编码方式, 按其来做解码或求字符数就可以了.