utf-8 gbk gb2312的区别
utf-8 gbk gb2312的区别
utf-8 gbk gb2312的区别
一、GB2312字符集编码
1、GB2312 是对 ANSI 的简体中文扩展。GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般 用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。
2、区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。它将收录的汉字分成两级:第一级是常用汉字计 3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。一级汉字 是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。
3、GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。
4、GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。
5、EUC-CN可以理解为GB2312的别名,和GB2312完全相同。
6、GB2312 编码中小于 127 的字符与 ASCII 的相同。
7、因为 GB2312 无法对繁体中文编码,所以与之对应的繁体中文编码方式为 BIG5。
二、GBK字符集编码
1、GBK 编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字,支持繁体中文和更多的字符。同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。GBK还收录了GB2312不包含的 汉字部首符号、竖排标点符号等字符。
2、GBK的整体编码范围是为0x8140-0xFEFE,不包括低字节是0×7F的组合。高字节范围是0×81-0xFE,低字节范围是0x40-7E和0x80-0xFE。
3、低字节是0x40-0x7E的GBK字符有一定特殊性,因为这些字符占用了ASCII码的位置,这样会给一些系统带来麻烦。
4、有些系统中用0x40-0x7E中的字符(如“|”)做特殊符号,在定位这些符号时又没有判断这些符号是不是属于某个 GBK字符的低字节,这样就会造成错误判断。在支持GB2312的环境下就不存在这个问题。需要注意的是支持GBK的环境中小于0x80的某个字节未必就 是ASCII符号;另外就是最好选用小于0×40的ASCII符号做一些特殊符号,这样就可以快速定位,且不用担心是某个汉字的另一半。Big5编码中也 存在相应问题。
5、CP936和GBK的有些许差别,绝大多数情况下可以把CP936当作GBK的别名。
三、unicode字符集编码
1、每一种语言的不同的编码页,增加了那些需要支持不同语言的软件的复杂度。因而人们制定了一个世界标准,叫做unicode。unicode为每个字符提供 了唯一的特定数值,不论在什么平台上、不论在什么软件中,也不论什么语言。也就是说,它世界上使用的所有字符都列出来,并给每一个字符一个唯一特定数值。
2、Unicode的最初目标,是用1个16位的编码来为超过65000字符提供映射。但这还不够,它不能覆盖全部历史上的文字,也不能解决传输的问题 (implantation head-ache's),尤其在那些基于网络的应用中。已有的软件必须做大量的工作来程序16位的数据。
3、Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中,字符是 以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分,例如,在UTF-8 和ASCII中,“A”的编码都是0x41.
4、UTF-16和UTF-32分别是Unicode的16位和32位编码方式。考虑到最初的目的,通常说的Unicode就是指UTF-16。
四、UTF
UTF(Unicode/UCS Transfer Format),UCS 变长存储的编码方式,主要用来解决 UCS 编码的传输问题的。分为 UTF-7,UTF-8,UTF-16,UTF-32 等。
五、UTF-8
1、UTF-8(Unicode Transformation Format-8bit) 是一次传输 8 位 (一个字节) 的 UTF 编码方式,以8位为单元对UCS进行编码。
2、允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三 个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显 示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
3、UTF-8 的传输与字节顺序无关,可以在不同平台之间交流,并且容错能力高,任何一个字节损坏后,最多只会导致一个编码码位损失,不会链锁错误 (如 GB 码少一个字节就会整行乱码),所以建议在保存文件时尽量采用 UTF-8 的编码来保存文件。
4、GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
5、例如
"我" 的 unicode/UCS 编码为 "U+6211"(01100010 00010001),在 U+00000800 - U+0000FFFF 之间,所以采用三字节编码,按规则分段为:0110 001000 010001,再分别替换上表中的x,得到11100110 10001000 10010001,即为 "E6 88 91",这就是 "我" 的 UTF-8 编码。
六、GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
- css的字体大全(CSS 常用中文字体 Unicode 编码表)
- url编码及解码(伪静态URL中文乱码问题解决方法)
- python对于gbk处理(Python 2/3下处理cjk编码的zip文件的方法)
- mysql字段多有什么问题(MySQL编码不一致可能引起的一些问题)
- pythonrequest包设置编码(解决python3中的requests解析中文页面出现乱码问题)
- python中encode中文自定义编码(详解Python解决抓取内容乱码问题decode和encode解码)
- URL如何编码与解码
- apache错误编码代码(关于Apache默认编码错误 导致网站乱码的解决方案)
- python怎样看字符unicode编码(Python3中编码与解码之Unicode与bytes的讲解)
- mysql编码设置
- python的编码方式(Python中文编码知识点)
- dede编码在哪里改(dede栏目页面包屑导航最后的分隔符大于号去掉方法)
- 什么是mime编码(Mime类型与文件后缀对照表)
- 创建jsp时如何默认生成的是utf-8(js判断文件是否为utf-8编码的方法)
- mysql命令输入行在哪(MySQL命令行操作时的编码问题详解)
- html中的特殊符号编码
- 七夕的寓意(七夕的寓意)
- 苏志燮赵恩静结婚,韩国四大公共财产变三人,这么快就有替补了(苏志燮赵恩静结婚)
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
热门推荐
- 简单两步修改Win系统远程桌面端口3389(简单两步修改Win系统远程桌面端口3389)
- ASP.NET中Obsolete属性
- SQL SERVER中使用WITH TIES获取前几行数据
- mysql改root密码命令(MySQL root密码的重置方法)
- css中:first-child
- css代码大全登录界面(Div+CSS仿微信公众平台登录页面)
- dedecms屏蔽规则(织梦dedecms修改任意管理员漏洞处理方法)
- docker入门搭建博客(快速掌握使用Docker搭建开发环境)
- reactnative动态设置值(react native实现监控手势上下拉动效果)
- 数据库having的用法(数据库SQL中having和where的用法区别)