php mb_strlen函数指定不同的编码输出结果不同解决方案

WBOY
Freigeben: 2016-06-13 11:19:41
Original
1146 Leute haben es durchsucht

php mb_strlen函数指定不同的编码输出结果不同

本帖最后由 lylgxy2007wht 于 2013-04-02 11:37:02 编辑 mb_strlen函数指定不同的编码输出结果不同,哪位高手大侠给解释下原因

页面编码utf-8
<br />$text = "啊啊啊啊"; <br />echo mb_strlen($text,'utf8')."<br/>";<br />echo mb_strlen($text,'gbk')."<br/>";<br />echo mb_strlen($text,'gb2312')."<br/>";<br />echo strlen($text);<br />
Nach dem Login kopieren
Nach dem Login kopieren

输出:4 6 8 12

页面编码gb2312
<br />$text = "啊啊啊啊"; <br />echo mb_strlen($text,'utf8')."<br/>";<br />echo mb_strlen($text,'gbk')."<br/>";<br />echo mb_strlen($text,'gb2312')."<br/>";<br />echo strlen($text);<br />
Nach dem Login kopieren
Nach dem Login kopieren

输出:4  4  4  8
php
------解决方案--------------------
这是PHP官网字符集列表
http://www.php.net/manual/en/mbstring.supported-encodings.php


mb_internal_encoding("UTF-8");
echo mb_internal_encoding();


------解决方案--------------------
"啊啊啊啊"的字节16进制表示为 
UTF-8: E5 95 8A E5 95 8A E5 95 8A E5 95 8A ---12
GB2312: B0 A1 B0 A1 B0 A1 B0 A1 ---8

在utf-8时
utf-8 [E5 95 8A] [E5 95 8A] [E5 95 8A] [E5 95 8A] --- 4
gbk [E5 95]鍟 [8A E5]婂 [95 8A]晩 [E5 95]鍟 [8A E5]婂 [95 8A]晩 --- 6
gb2312 [E5 95]鍟 [8A] [E5 95]鍟 [8A] [E5 95]鍟 [8A] [E5 95]鍟 [8A]  ---8
注:8A开头不存在于gb2312(最低A1开始),所以独立计算了

在gb2312时
utf-8(不确定) 由于不存在B0字节开头的utf-8字符,我猜mb是“智能”地按双字节计算 ---4
gbk/gb2312 [B0 A1] [B0 A1] [B0 A1] [B0 A1] ---4
------解决方案--------------------
实测结果(php 5.4.12)
utf-8 下得 4 6 8 12
gb2312 下得 8 4 4 8

不需要做任何解释,只有在正确的字符集中才可以得到正确的结果
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!