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

帮忙解释一下8bit编码方式?

帮忙解释一下8bit编码方式?

PHP
德玛西亚99 2019-03-17 03:44:19
在yii2框架中看到了php与redis通过socket通信的时候,框架中计算字符串的长度和截取返回的信息都是使用的8bit这种编码方式: mb_strlen($arg, '8bit') 文档中没有关于该编码的说明,什么时候该使用这种编码方式?这种编码方式对中文编码不会有问题?
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

PHP支持mbstring.func_overload, 用于解决原生substr无法有效应对多字节编码字符串问题

mbstring
支持一个“函数重载”功能,将对应的多字节版本重载到标准字符处理函数上,例如你能够让这类应用在不修改代码的前提下添加多字节的处理能力。
比如,启用函数重载后,mb_substr() 将会代替 substr() 被调用。
在很多情况下这个功能允许让仅支持单字节编码的应用简单地和多字节环境对接。

要使用函数重载功能,设置 php.ini 里的 mbstring.func_overload 为正值,就是表示为重载函数分类的位掩码组合。
要重载 mail() 函数需要设置它为 1。字符串函数设置为 2,正则表达式函数为 4。 例如,当它设置为 7, mail、strings和 正则表达式函数将都会被重载。

那么这种情况下php runtime状态是未知的, 所以在计算字符长度时, 用mb_strlen 8bit来保证计算字符串长度的正确性(按照1byte = 8bit)

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 1043 浏览

添加回答

举报

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