`
ku_uga
  • 浏览: 47024 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

认识GB2312、GBK、GB18030、Unicode、UTF-8、CJK

阅读更多

GB2312

GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,198151日实施,通行于大陆。新加坡等地也使用此编码。

GB 2312GB 2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集•基本集》,又称为GB0,由中国国家标准总局发布,198151日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312

GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。

GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。   

01-09区为特殊符号。   

16-55区为一级汉字,按拼音排序。   

56-87区为二级汉字,按部首/笔画排序。   

10-15区及88-94区则未有编码。   

举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601

每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。

“高位字节”范围是0xA1~0xF7(0xA0+01~0xA0+8710100001~11110111)

“低位字节”范围是0xA1-0xFE(0xA0+01~0xA0+9410100001~11111110)

由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。例如“啊”字在大多数程序中,会以两个字节,0xB0(A0+16) 0xA1(A0+01)储存。

对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBKGB 18030汉字字符集的出现。

GB 2312兼容ASCII,即GB2312对英文字符的编码是和ASCII完全一样的,而所有中文字符的GB2312内码高位都为1,不会出现0,所有的ASCII内码的最高位都为0,并且每个汉字占用2个字节, 对于程序来说只要检查一个字节的最高位,就可以很容易的判断这个字符是中文还是英文字符,非常方便。

 

GBK

GB2312 仅收汉字 6763 个,这大大少于现有汉字,随着时间推移及汉字文化的不断延伸推广,有些原来很少用的字,现在变成了常用字,例如:朱镕基的“镕”字,未收入 GB2312-80.

GBK 最初是由微软对 GB2312 的扩展,也就是 CP936 字码表 (Code Page 936)的扩展(原来的 CP936 GB2312-80 一模一样),最初出现于 Windows 95 简体中文版中,由于 Windows 产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。

GBK之所以成功,正是因为它弥补了GB2312的缺陷:1。收录的汉字量大大增加;2。完全向下兼容GB2312,为GB2312所写的程序、文档无需任何变更即可正常使用。

GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于199510月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。

GBK/2OXB0A1-F7FE10110000 10100001~ 11110111 11111110

收录 GB2312 汉字 6763 个,按原序排列;

GBK/3OX8140-A0FE10000001 01000000~ 10100000 11111110

收录 CJK 汉字 6080 个;

GBK/4OXAA40-FEA010101010 01000000~ 11111110 10100000

收录 CJK 汉字和增补的汉字 8160 个。

 

GB18030

2000 年的 GB18030 取代了 GBK1.0 的正式国家标准。该标准收录了 27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持 GB18030 ,对嵌入式产品暂不作要求。所以手机、MP3 一般只支持 GB2312

GB18030 是最新的汉字编码字符集国家标准, 向下兼容 GBK GB2312 标准。 GB18030 编码是一二四字节变长编码

一字节部分从 0x0~0x7F ASCII 编码兼容。

二字节部分, 首字节从 0x81~0xFE, 尾字节从 0x40~0x7E 以及 0x80~0xFE, GBK 标准基本兼容。

四字节部分, 第一字节从 0x81~0xFE, 第二字节从 0x30~0x39, 第三和第四字节的范围和前两个字节分别相同。 四字节部分覆盖了从 0x0080 开始, 除去二字节部分已经覆盖的所有 Unicode 3.1 码位。也就是说, GB18030 编码在码位空间上做到了与 Unicode 标准一一对应,这一点与 UTF-8 编码类似。

 

UNICODE

GBK, GB18030以及同期流行于台湾香港的BIG5编码. 虽然编码有些不同, 但是设计思想是一致的: 兼容ASCII,并确保不会有某个字节值为0的内码出现.有一个共同的特点是: 它们都是局部的标准,只流行于某个地区/国家内.

由于内码表都是各个国家独自制定的,同一个内码,在不同的国家表示的可能是不同的字符.(除了ASCII字符, ASCII字符在所有国家指定的内码表中都有同样的值.)不利于国家间的信息交换. 于是 UNICODE 应运而生.

UNICODE 采用一种很简单的办法来解决这个问题. 就是采用2个字节(UCS-2)或者4个字节(UCS-4)字节标识一个字符. 2个字节总共可以表示65535个字符,足够表示世界上的所有语言的所有字符.(汉字不就有4万多个吗,65535怎么够. 我估计只是常用的汉字几千个被编在UCS-2中吧. 目前被正式编码到UNICODE码位的只有不超过65534, 所以就目前的情况来说,2个字节是可以的.) 注意 UCS-4, UCS-2 ASCII是向下兼容的,只要前面补0就可以了.这点很重要,可以一直扩展下去包含全宇宙的字符.

现在地球上每个字符在所有采用UNICODE字符编码的计算机内都有一个唯一的内码了.

要注意, 除了ASCII字符外,其他国家文字的字符的内码是重新分配过的,不一定和各国原有的编码相同.比如大部分汉字的GB2312内码和UNICODE 内码都是不同的.

 

UTF-8

很显然,对于英语国家来说,UNICODE内码非常浪费空间,对于UCS-2 浪费了50%的存储空间,对于 UCS-4 则浪费了70%的存储空间. 而且还有一个更大的问题, UNICODE的内码中含有很多 '\0', 原有的C标准库函数没办法处理这些字符串.于是有人发明了一种针对UNICODE的变换规则,UNICODE字符串中的0去除. 注意这个变换规则不是通过查表实现的,而只要用一些位移操作就可以实现. 这就是UTF8. UTF8 只是 UNICODE内码在存储/传输时的状态. 而从GB2312编码转换到UNICODE编码需要查表. UTF8 UNICODE 的关系 GB2312 UNICODE的关系有本质的不同. UTF8 UNICODE 是一个人的两个面孔, GB2312 UNICODE 是两个人. 所以,要实现UTF8编码到GB2312编码的转换必须先把 UTF8编码还原为UNICODE编码,再通过查表的方式,UNICODE编码转化为GB2312编码

 

CJK

中日韩统一表意文字(CJK Unified Ideographs),目的是要把分别来自中文、日文、韩文、越文中,本质、意义相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如日本国字、韩国独有汉字、越南的喃字)于ISO 10646Unicode标准内赋予相同编码。

分享到:
评论

相关推荐

    cjk-4.8.4.rar

    \begin{CJK*}{UTF8}{gbsn} 这是一个使用CJK宏包编写的中文段落。 \end{CJK*} \end{document} ``` 在这里,“UTF8”表示字符编码,“gbsn”则是简体中文的字体名称。通过这样的设置,LaTeX能够正确识别并输出中文字符...

    常用字符集编码[参考].pdf

    本文将详细介绍常用的字符集编码,包括 ASCII、GB2312、GBK、GB18030、Unicode 和 UTF-8 等。 一、ASCII 码 ASCII 码是 7 位编码,编码范围是 0x00-0x7F。ASCII 字符集包括英文字母、阿拉伯数字和标点符号等字符。...

    常用编码方式中英文对照表

    * 特点:GBK 编码是 GB2312 编码的超集,兼容 GB2312 编码同时收录了 Unicode 基本多文种平面的所有 CJK 汉字。 * 应用场景:中国大陆地区的计算机系统、办公软件等。 四、GB18030 编码 * 中文名称:GB18030 编码 ...

    常用字符集编码详解

    本文将深入解析几种常用的字符集编码,包括ASCII、GB2312、GBK、GB18030、Big5以及Unicode及其变种UTF-8、UTF-16、UTF-32,帮助读者理解它们的特点、应用范围及相互之间的转换。 #### ASCII编码 ASCII(American ...

    codepage(DBCS码与Unicode码对应表)

    例如,假设你有一个使用GBK编码的文本文件,其中包含一些中日韩字符,你想要将这个文件转换为Unicode编码的UTF-8格式,以便在支持Unicode的系统上正确显示。这时,DBCS-Unicode对应表可以帮助你完成这个转换。首先,...

    汉字unicode码.txt

    例如,将一个网页从GBK编码转换为UTF-8编码,或者将一个文本文件从Unicode编码转换为其他编码格式。 #### 五、总结 通过对汉字Unicode编码的深入研究,我们不仅了解了这一编码方式的基本概念和原理,还掌握了如何...

    常用字符集简介

    GBK编码是GB2312的超集,向下完全兼容GB2312的同时,收录了Unicode基本多文种平面中的所有CJK汉字,从而大大扩展了字符集的容量。GBK同样支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符。...

    MadEdit编辑器

    包括Unicode(UTF-8、UTF-16/32)、Big5、GBK以及S-JIS 支持Unicode CJK 扩展B区(Ext-B) 可进行中文繁、简体的转换 若用户输入的字符不为当前编码支持,该字符会被转换成诸如U+XXXX的Unicode格式可用正则表达式进行...

    常用中文字符

    描述中提到的“中国常见的文字字符集”进一步细化了主题,它可能包含了GB2312、GBK、GB18030或Unicode(如UTF-8编码)等字符集的一部分或全部。GB2312是最基础的简体中文字符集,包含6763个汉字;GBK在此基础上扩展...

    MADEDIT 多标签

    Unicode(UTF-8, UTF-16/32 with Little or Big Endian), Big5, GBK and S-JIS etc. * Supports Unicode CJK Ext-B. * If users input a character that is not supported by current encoding, this character will...

    BIG码与GB码相互转换程序

    - 多字节字符:对于多字节字符(如Unicode的UTF-8编码),直接进行字节转换可能会导致字符错误,需要确保正确处理多字节序列。 通过理解这两种编码系统的原理,以及转换过程中可能遇到的问题,我们可以更好地利用...

    【转贴】Fast Reports V3.15 输出CJK PDF完美解决方案

    2. CJK字符集:了解GB2312、GBK、Big5、Shift_JIS、EUC-KR等常见CJK编码标准,以及Unicode中的CJK统一表意字符区。 3. 字体支持:识别和使用支持CJK字符的TrueType或OpenType字体,如Arial Unicode MS、SimSun、MS ...

    java PDF 中文 乱码 SIMYOU

    PDF常用的编码有GBK、UTF-8等,其中UTF-8是推荐的选择,因为它支持的字符范围更广。 要解决中文乱码问题,我们需要使用一个支持Unicode编码的PDF库。Apache的PDFBox是一个常用的开源库,它提供了在Java中生成和操作...

    新编码转换大全模块-易语言

    这个“新编码转换大全模块”提供了丰富的函数和方法,涵盖了常见的编码格式如ASCII、GB2312、GBK、Big5、UTF-8、UTF-16、Unicode等,以及一些不常见的编码。开发者可以方便地将文本从一种编码转换为另一种编码,这...

    计算机编码知识,VB介绍

    最后,Unicode码,现在普遍称为UTF(Unicode Transformation Format),是一种统一的编码标准,它包含了许多编码方式,如UTF-8、UTF-16等,旨在实现全球字符的一致表示。 理解这些编码系统及其相互关系对于编程,...

    PDFCJK乱码解决

    例如,如果PDF是用GBK编码创建的,而阅读环境只支持UTF-8,那么会出现乱码。确保两者匹配可以避免乱码。 总的来说,解决PDFCJK乱码问题需要综合考虑字体支持、软件版本、文件编码和阅读器设置等多个因素。通过合理...

    java 判断中英文

    而中文字符则使用Unicode编码,如GBK、GB2312或UTF-8等,它们包含了数千甚至上万的字符。在Java中,字符串是以Unicode编码存储的。 要判断一个字符串中是否包含中文字符,可以遍历字符串中的每个字符,然后检查其...

    pdf阅读器

    对于中文,这意味着支持GB2312、GBK、Big5和Unicode(如UTF-8)等编码,以及包含中文字符的TrueType或OpenType字体。 4. **组件化开发**:像fpdfcjk.bin这样的组件,通常是为了特定功能或性能优化而设计的。它们...

    python黑魔法之编码转换

    例如,UTF-8和GBK在前两个字节上存在重叠区域,导致简单的字符替换可能不够准确。因此,还需要进一步优化算法以提高准确性: 1. **细致分析字符**:对每个无法解码的字符进行更细致的分析,避免简单的替换造成数据...

Global site tag (gtag.js) - Google Analytics