問題
mb_substr
解決方法
$string = "中華人民共和國";
$mystring=mb_substr($string,0,6,'UTF-8');
echo $mystring;
復制代碼在書上看到:UTF-8編碼下面,一個中文漢字占用3個字節;GB2312/GBK編碼下面一個漢字占用2個字節
那上面代碼是不是就應該輸出“中華”二字呢?
參考答案
輸出“中環人民共和”
參考答案
那個6是字符數,不是字節數.
請仔細看手冊-.-
參考答案
'UTF-8' 把這個去掉看看...
參考答案
原帖由 於安 於 2008-11-7 13:28 發表 [url=http://bbs.111cn.cn/redirect.php?goto=findpost&pid=698924&ptid=89149]鏈接標記[img]http://bbs.111cn.cn/images/common/back.gif[/img][/url]
'UTF-8' 把這個去掉看看...
不傳入encoding參數的話,
我記得是默認使用ini下的 mbstring.internal_encoding
如果mbstring.internal_encoding未設置,應該就是用Latin-1(iso-8859-1)
參考答案
原帖由 於安 於 2008-11-7 13:28 發表 [url=http://www.111cn.cn/bbs/redirect.php?goto=findpost&pid=698924&ptid=89149]鏈接標記[img]http://www.111cn.cn/bbs/images/common/back.gif[/img][/url]
'UTF-8' 把這個去掉看看...
這樣的話是一個中文字占用兩個字節
如:echo $mystring=mb_substr($string,0,4);//結果:中華
echo $mystring=mb_substr($string,0,3 or 5);//結果:中華
參考答案
原帖由 於安 於 2008-11-7 13:28 發表 [url=http://www.111cn.cn/bbs/redirect.php?goto=findpost&pid=698924&ptid=89149]鏈接標記[img]http://www.111cn.cn/bbs/images/common/back.gif[/img][/url]
'UTF-8' 把這個去掉看看...
對不起,我的錯,我頁面是GB2312的- -
頁面改成UTF8後,把'UTF-8'去掉就是一個漢字三個字節。謝謝大家的幫忙
參考答案
原帖由 男人 於 2008-11-7 16:31 發表 [url=http://bbs.111cn.cn/redirect.php?goto=findpost&pid=699902&ptid=89149]鏈接標記[img]http://bbs.111cn.cn/images/common/back.gif[/img][/url]
對不起,我的錯,我頁面是GB2312的- -
頁面改成UTF8後,把'UTF-8'去掉就是一個漢字三個字節。謝謝大家的幫忙
一個字符集可以向下包含字節數的字符,
例如gbk可以包含雙字節字符和單字節字符.
utf8可以包含6,5,4,3,2,1(舊的是4,3,2,1)字節的字符.
因為不能確定一個字串中包含多字節還是單字節字符.
GBK環境: $string = "測ab試cd字0串";
$mystring=mb_substr($string,0,3,'GBK');
echo $mystring;
復制代碼這個3返回的是字符數,設定的是字符數而且不是字節數.
唉~,說什麼好呢,看你發了這麼多關於多字節字符編碼的帖,
到頭來,還是沒明白字符和字節還有字符編碼的關系-.-
[ ]
參考答案
崩潰 -。 -
參考答案
謝謝, 豁然開朗……