为了账号安全,请及时绑定邮箱和手机立即绑定

php计算字符串的gbk格式的字节长度有问题。

php计算字符串的gbk格式的字节长度有问题。

PHP
HUH函数 2018-10-23 22:17:11
问题描述理论上gbk格式下一个中文是2个字节。数字和英文是1个字节。可是php上判断字节长度的时候发现 数字在中文后面的时候数字的长度被省略掉了问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)mb_strlen('语音', 'GB2312')); //字节长度4mb_strlen('语音1', 'GB2312'); //字节长度4mb_strlen('语音12', 'GB2312'); //字节长度5mb_strlen('1语音1', 'GB2312'); //字节长度5mb_strlen('1我你1', 'GB2312'); //字节长度6你期待的结果是什么?实际看到的错误信息又是什么?
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

PHP文件编码 与 mb_strlen 参数一致时,返回值是正确的
PHP文件编码 与 mb_strlen 不一致时,返回根据 PHP文件编码不同,会有不同

具体解释如下:
PHP文件编码 是 UTF-8 的时候

1语音1 的实际字节是:0x31 0xE8 0xAF 0xAD 0xE9 0x9F 0xB3 0x31 用能看 hex 格式的编辑器看下就知道了
当你采用 GB2312 做多字节长度计算的时候,首先按照上面列出的实际字节,按 GB2312 进行编码
0x31 0xE8 0xAF 0xAD 0xE9 0x9F 0xB3 0x31 => 1璇???
所以计算出来长度是 5

其他字符串参考下图

https://img1.sycdn.imooc.com//5bcf2d930001e0b306070800.jpg

查看完整回答
反对 回复 2018-10-23
  • 1 回答
  • 0 关注
  • 1062 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信