GB2312,GBK,GB18030,UTF8四种汉字编码标准有什么区别和联系



从GB2312、GBK 到 GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为 0。按照程序员的称呼,GB2312、GBK 到 GB18030 都属于双字节字符集 (DBCS)。

以下是这四种字符集的包含关系:GB2312 < GBK < GB18030 < UTF8

-------------------------------------------------------------------------------------------

可以参考这个链接  http://www.fmddlmyy.cn/text24.html

-------------------------------------------------------------------------------------------

1980年的GB2312一共收录了7445个字符,包括6763个汉字和682个其它符号。

1995年的汉字扩展规范GBK1.0收录了21886个符号,包括21003个汉字和883个其它符号。

GB18030有两个版本:GB18030-2000和GB18030-2005。GB18030-2000是GBK的取代版本,它的主要特点是在GBK基础上增加了CJK统一汉字扩充A的汉字。GB18030-2005的主要特点是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。

否则在处理部分文件时,进行转换编码转换的时候,会出现转不了的情况,就会报错。

比如在PYTHON里,

for l in open('abc_gb18030.txt'):
    ls = l.rstrip('\n').decode('gbk').encode('utf8').split('\t')
    print ls

abc_gb18030.txt是GB18030编码,在代码里,先转成了GBK,然后又转成了UTF8,因为在向GBK转换的时候,是又一个较大字符集往小的字符集转,所以就会报错。



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 10:58:03

GB2312,GBK,GB18030,UTF8四种汉字编码标准有什么区别和联系的相关文章

汉字编码 (GB2312 GBK GB18030)

GB2312 收录简化汉字及符号.字母.日文假名等共7445个图形字符,其中汉字占6763个 每个符号都用两个字节表示,每个字节均采用七位编码表示,习惯上 第一个字节是高字节,第二个字节是低字节 GB2312的编码范围为2121H-777EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别 GBK 由于GKB收录的汉字较少以及配合UNICODE的实施,GBK 产生了 向下兼容GB2312 双字节表示 GBK共收入21886个汉字和图形符号,包括: GB2312中的全部汉字.非

告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现(转)

效果图 字符 字符是早于计算机而存在,从人类有文明那时起,人们就用一个个符号代表世间万象.如ABC,如“一.二.三”. 字符集 字符集是所有字符的集合. XXX字符集 给字符集中的每一个字符套上一个序号后的字符集.常见的XXX字符集有ASCLL字符集.Unicode字符集等等,不同种字符集为每个字符编的序号不同,包含的字符数量也不同. GBK.UTF-8 GBK.UTF-8是一种编码编码格式.当然,你也可以说unicode是一种编码格式,因为它的的确确为每个字符编了一个码,没错,可是unicod

ThinkPHP 路由解析(四种url的意义、区别、以及设置某一种url的真实作用)

原理: 通过url地址get参数找到指定的控制器,并进行对应方法调用请求 http://网址/index.php?m=模块名称&c=控制器&a=方法 ThinkPHP框架url可以有以下四种 1.http://网址/index.php?m=模块名称&c=控制器&a=方法   基本get模式 2.http://网址/index.php/模块/控制器/方法                        路径模式 pathinfo 3.http://网址/模块/控制器/方法   

GB2312,GBK和UTF-8的区别

GBK GBK包含全部中文字符, GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1.至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码.对于英文字符较多的论坛则用UTF-8节省空间. GBK包含全部中文字符,UTF-8则包含全世界所有国家需要用到的字符.GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准UTF-8编码的文字可以在各国各种支持UTF8字符

C++ 四种强制转换符的区别

作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别.除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象.而dynamic_cast则不然.在这里,不再讨论其他三种转换和C风格的转换. 首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型,这种检查不是语法上的,而是真实情况的检查. 先看RTTI

静态、自适应、流式、响应式四种网页布局有什么区别?

响应式与自适应的原理是相似的,都是检测设备,根据不同的设备采用不同的css,而且css都是采用的百分比的,而不是固定的宽度. 不同点是响应式的模板 在不同的设备上看上去是不一样的,会随着设备的改变而改变展示样式. 而自适应不会,所有的设备看起来都是一套的模板,不过是长度或者图片变小了,不会根据设备采用不同的展示样式. 流式就是采用了一些设置,当宽度大于多少时怎么展示,小于多少时怎么展示,而且展示的方式向水流一样,一部分一部分的加载. 静态的就是采用固定宽度的了.

a:link a:visited a:hover a:active四种伪类选择器的区别

a:link选择网页中所有没有被visited的a标签(就是没有鼠标悬停hover或者点击click) a:visited选择网页中所有已经被click的a链接,用来告诉用户这个链接已经被你访问过了 a:hover,说实话这个我用的最多,其实就是选择有鼠标悬停的a链接 a:active,顾名思义active就是活动的意思,表示的是选择用户点击并且还没有放开时(其实就是按住)的a链接 当然还有其他的譬如a:focus,这个表示选择光标(焦点)落下的a链接.

编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头

编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101这样的字符串(二进制),当然了我们看这样的01串时肯定会比较头晕的. 所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样. 位(bit) 计算机中存储一个0,或者一个1的位置空间,叫做位. 字节(byte) 计算机中,我们把连续的8个位空间,叫做一个字节. A

Android四种Activity的加载模式(转)

建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型: http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中对“Android的单线程模型”的描述,明白Activity的一些注意事项. Android Application Task Activities的关系  http://www.cnblogs.com/ghj1976/archive/2011/04/29/2