加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php尽量不要使用gb2312避免乱码

发布时间:2020-05-25 06:18:53 所属栏目:PHP 来源:互联网
导读:php尽量不要使用gb2312避免乱码

感兴趣php尽量不要使用gb2312避免乱码的小伙伴,下面一起跟随脚本之家 jb51.cc的小编来看看吧。<br>
查阅以下几种编码

GB2312
双字节,定长
包括一二级汉字和9区符号
高位低位一样,都是从0xA1~0xFE
汉字编码范围是0xB0A1~0xF7FE
 
GBK
双字节,定长
兼容GB2312
编码范围:0x8140~0xFEFE
所有字符都可以映射到Unicode2.0
 
GB18030-2000(GBK2K)
收藏少数民族字型
不定长,包含二字节部分和四字节部分
二字节部分兼容GBK
四字节部分是扩充字符,第一第三字节范围:0x81~0xFE,第二第四字节范围:0x30~0x39
 
Unicode
包括所有字符字型
各地区语言都可与之建立映射
异种语言的转换是通过Unicode来完成的
汉字从4E00开始
 
其中gb2312编码所表示的字符最少,这样其实会引起很多问题,其中有些可能你看不懂的乱码问题也是因为这原因而起的。
这里举个例子:
"和珅"这两个字中的"珅"字简体字和繁体字是一样的,但在gb2312编码里是没有的。这样在使用gb2312编码的页面里就会出问题了,可能你在页面中输入是正确的但传输到了服务器端就会乱码,而且他可能会影响下面的字也出现乱码(字节码组合问题)。
 
测试一下语句

echo iconv('UTF-8','gb2312//IGNORE',iconv('gb2312','UTF-8','珅字出现乱码')).'<br />';
echo mb_convert_encoding(mb_convert_encoding('珅字出现乱码','gb2312'),'gb2312','UTF-8').'<br/>';
echo mb_convert_encoding(mb_convert_encoding('珅字出现乱码','gbk'),'gbk','UTF-8').'<br />';
echo iconv('UTF-8',iconv('gbk','珅字出现乱码')).'<br />';

结果:
 
?字出现乱码
珅字出现乱码
珅字出现乱码
 
第一行没有输出
第二行出现乱码
第三行由于使用gbk编码显示正常
第四行也由于使用gbk编码显示正常
 
而gbk兼容GB2312而且可以在gb2312编码的页面中正常显示。在使用gb2312编码的页面使用gbk编码,可以避免不必要的麻烦。如果一定要用gb2312编码可以在前台显示页面使用gb2312编码,而后台数据库和服务器端使用gbk编码。
 
另:网上所说的iconv在utf-8转gb2312会出现乱码的问题,有的说是bug。其实这不是bug,也是这个问题。utf-8表示的字在gb2312里没有,当然要乱码了。因此当你发现gb2312出现乱码应该首先想到是这问题。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读