亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php計算字符串的gbk格式的字節長度有問題。

php計算字符串的gbk格式的字節長度有問題。

PHP
HUH函數 2018-10-23 22:17:11
問題描述理論上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

其他字符串參考下圖

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

查看完整回答
反對 回復 2018-10-23
  • 1 回答
  • 0 關注
  • 1090 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號