問題描述理論上gbk格式下一個中文是2個字節。數字和英文是1個字節??墒莗hp上判斷字節長度的時候發現 數字在中文后面的時候數字的長度被省略掉了問題出現的環境背景及自己嘗試過哪些方法相關代碼// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)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
其他字符串參考下圖
- 1 回答
- 0 關注
- 1090 瀏覽
添加回答
舉報
0/150
提交
取消