国家标准代码,简称国标码,是中华人民共和国的中文常用汉字编码集,亦为新加坡采用。
现时中华人民共和国官方强制使用GB 18030标准,但较旧的计算机仍然使用GB 2312。
较常见的国家汉字标准代码列表:
GB 2312-80
信息交换用汉字编码字符集 基本集(又称 GB 或 GB0) GB 13000.1-93
信息技术 通用多八位编码字符集(UCS)第一部分(相当于 ISO 10646-1:1993 中文版) GB 18030-2005
信息技术 中文编码字符集 ---
GB 2312或GB 2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·基本集》,又称为GB0,由中国国家标准总局发布,1981年5 月1日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。 GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。
GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。
对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。 --
GB 13000,中华人民共和国国家标准的国家标准代码之一,全称 GB 13000.1-93《信息技术通用多八位编码字符集(UCS)第一部分:体系结构与基本多文种平面》。此标准等同采用国际标准化组织 ISO/IEC 10646.1:1993《信息技术 通用多八位编码字符集(UCS)第一部分:体系结构与基本多文种平面》。
GB 13000的字符集包含20,902个汉字。 --
GBK全名为汉字内码扩展规范,英文名Chinese Internal Code Specification。K 即是“扩展”所对应的汉语拼音(KuoZhan11)中“扩”字的声母。GBK 来自中国国家标准代码GB 13000.1-93。
GBK最初是由微软对GB2312的扩展,也就是CP936字码表 (Code Page 936)的扩展(原来的
CP936和GB 2312-80一模一样),最初出现于Windows 95简体中文版中,由于Windows产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。
虽然GBK收录了所有Unicode 1.1及GB 13000.1-93之中的汉字,但是编码方式与Unicode 1.1及GB 13000.1-93不同。仅仅是GB 2312到GB 13000.1-93之间的过渡方案。 --
GB 18030,全称:国家标准GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB 18030-2000《信息技术 信息交换用汉字编码字符集基本集的扩充》的修订版。与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。 ---
GB/T 15273.1-94 ISO 8859-1 -1987 ---
通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的字符编码方式,采用4字节编码。
通用字符集又称Universal Multiple-Octet Coded Character Set,中国大陆译为通用多八位编码字符集.
-------
Unicode(统一码、万国码、单一码、标准万国码)是业界的一种标准,它可以使电脑得以呈现世界上数十种文字的系统。Unicode 是基于通用字元集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standard,目前第五版由Addison-Wesley Professional出版,ISBN-10: 0321480910)对外发表。
Unicode组织(The Unicode Consortium)是由一个非营利性的机构所运作,并主导Unicode的后续发展,其目标在于:将既有的字元编码方案,以 Unicode编码方案来加以取代,特别是既有的方案在多语环境下,皆仅有有限的空间以及不相容的问题。
Unicode 组织在 1991 年首次发布了 The Unicode Standard(ISBN 0-321-18578-1)。 Unicode 的开发结合了国际标准化组织(International Organization for Standardization,简称 ISO)所制定的ISO/IEC 10646,即通用字元集(Universal Character Set,简称 UCS)。Unicode 与 ISO/IEC 10646 在编码的运作原理相同,但 The Unicode Standard 包含了更详尽的实现资讯、涵盖了更细节的主题,诸如字元编码(bitwise encoding)、校对以及呈现等。
Unicode 截至目前为止历次的版次与发布时间如下:
Unicode 1.0:1991年10月 Unicode 1.0.1:1992年6月
Unicode 1.1:1993年6月 Unicode 2.0:1997年7月 Unicode 2.1:1998年5月 Unicode 2.1.2:1998年5月
Unicode 3.0:1999年9月;涵盖了来自ISO 10646-1的十六位元通用字元集(UCS)基本多文种平面(Basic Multilingual Plane)
Unicode 3.1:2001年3月;新增从ISO 10646-2定义的辅助平面(Supplementary Planes) Unicode 3.2:2002年3月 Unicode 4.0:2003年4月 Unicode 4.0.1:2004年3月 Unicode 4.1:2005年3月 Unicode 5.0:2006年7月 Unicode 5.1:2008年4月
大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。
编码方式
Unicode 的编码方式与 ISO 10646 的通用字符集(Universal Character Set,UCS)概念相对应,目前实际应用的 Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示 216 即 65536 个字符。基本满足各种语言的使用。
上述16位 Unicode 字符构成基本多文种平面(Basic Multilingual Plane,简称 BMP)。最新(但未实际广泛使用)的 Unicode 版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与 UCS-4 保持一致。
实现方式
Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unicode 编码的实现方式有所不同。Unicode 的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。
UTF-8 编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他 Unicode 字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。这样对以7位ASCII字符为主的西文文档就大大节省了编码长度(具体方案参见UTF-8)。
在 UTF-16 编码实现方式中使用了大尾序(Big-Endian, 简写为UTF-16 BE)、小尾序(Little-Endian, 简写为UTF-16 LE)的概念,以及可附加的BOM(Byte Order Mark)解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。
目前通用的实现方式是 UTF-16小尾序(BOM)、UTF-16大尾序(BOM)和 UTF-8。在微软公司Windows XP操作系统附带的记事本(Notepad)中,“另存为”对话框可以选择的四种编码方式除去非 Unicode 编码的ANSI(对于英文系统即ASCII编码,中文系统则为GB2312或Big5
编码) 外,其余三种为“Unicode”(对应UTF-16 LE)、“Unicode big endian”(对应UTF-16 BE)和“UTF-8”。
在Microsoft Word下,按下 Alt 键不放,输入 0 和某个字符的 Unicode 编码(十进制),再松开 Alt 键即可得到该字符,如Alt + 033865会得到 Unicode 字元叶。另外按Alt + X 组合键,MS Word 也会将光标前面的字符同其十六进制的四位 Unicode 编码进行互相转换。 ---
Unicode和ISO 10646的关系
历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织(ISO)和多语言软件制造商组成的统一码协会(Unicode Consortium)。前者开发的 ISO/IEC 10646 项目,后者开发的Unicode项目。因此最初制定了不同的标准。
1991年前后,两个项目的参与者都认识到,世界不需要两个不兼容的字符集。于是,它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从 Unicode 2.0开始,Unicode采用了与ISO 10646-1相同的字库和字码;ISO也承诺,ISO 10646将不会替超出U+10FFFF的UCS-4编码赋值,以使得两者保持一致。
统一码协会公布的Unicode标准包含了ISO/IEC 10646-1实现级别3的基本多文种平面。在两个标准里,所有的字符都在相同的位置并且有相同的名字。 ---
中日韩统一表意文字(英语:CJK Unified Ideographs),也称统汉字(Unihan),目的是要把分别来自中文、日文、韩文、越文中,本质相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如方块壮字、日本国字、韩国独有汉字、越南的喃字)于ISO 10646及Unicode标准内赋予相同编码。
越南文后来加入此计划,所以亦有 CJKV(中日韩越统一表意文字)的称呼。Unicode亦开始收录越汉字——喃字。
CJKV,是汉语(Chinese)、日语(Japanese)、韩语(Korean)、越南语(Vietnamese)的集合名词,其也组成了主要的东亚语言。CJKV这名词主要应用于软件产业与国际化与本地化领域。
中韩日越所使用的这些汉字总数,使用仅能呈现256字符的八位元字符编码系统自然是不足,至少必须使用十六位元固定宽度的字符编码、或是多位元可变长度的字符编码系统才能包含所有的汉字数量。十六位元固定宽度的字符编码(例如 Unicode 2.0 以及 2.0 之前的版本)目前已不再采用,取而代之的是可以包含更多的汉字的编码方式,例如 Unicode 5.0 包含了多达7万多的汉字,以及中华人民共和国政府现今所使用的GB18030字集。
即使中日越韩的编码具有共通的字集,然而用以呈现这些字集的常用编码方式是由各国政府以及软件公司所各自独立发展,并且彼此间并不相容。 Unicode尝试着将这些不同的字集加以统一,即所谓的 Han unification(中日韩统一表意文字、或称中韩日越统一表意文字)。 ---
CJK中韩日统一表意文字历史: 最初期的统一汉字(20,902字)
扩展A区包含有6,582个新的汉字,位置在 U+3400—U+4DB5 扩展B区包含有42,711个新的汉字,位置在 U+20000—U+2A6D6
按计划,中日韩统一表意文字扩展C区将收录4,149个汉字,包括来自中国大陆、澳门、台湾、日本、越南等尚未被编码的汉字。这些汉字预计会收录在下一版的 Unicode 版本中,位置在 U+2A700—U+2B734。 ----
基本多文种平面(Basic Multilingual Plane, BMP),或称第零平面(Plane 0),是Unicode中的一个编码区段。编码从U+0000至U+FFFF。
CJK Unified Ideographs Extension A (3400–4DBF) 中日韩统一表意文字 (4E00–9FFF) ----
为鉴于Unicode原有的16位空间不足以应用,于是从Unicode 3.1版本开始,设立了16个扩展字码空间,称为辅助平面,使 Unicode 的可使用空间由6万多字增至约100万字。原有的Unicode空间称为基本平面或基本多文种平面(Basic Multilingual Plane,缩写BMP),俗称第0平面(Plane 0)。辅助平面字符要用上4字节来储存。
其中,第二辅助平面又称为表意文字补充平面(Supplementary Ideographic Plane,缩写SIP,或简称Plane 2),整个范围在 U+20000~U+2FFFD。整个平面配置的都是一些罕用的汉字或地区的方言用字,如粤语用字及越南语的字喃。现时摆放了“中日韩统一表意文字扩展B 区”,共43,253个汉字,以及中日韩兼容表意文字增补(CJK Compatibility Ideographs Supplement)。预计“中日韩统一表意文字扩展C区”和“中日韩统一表意文字扩展D区”也会使用此平面。 ----
《CJK统一汉字编码字符集》— 国家标准 GB13000.1 是完全等同于国际标准《通用多八位编码字符集 (UCS)》 ISO10646.1。《GB13000.1》中最重要的也经常被采用的是其双字节形式的基本多文种平面。在这65536个码位的空间中,定义了几乎所有国家或地区的语言文字和符号。其中从0x4E00到 0x9FA5 的连续区域包含了 20902 个来自中国(包括台湾)、日本、韩国的汉字,称为 CJK (Chinese Japanese Korean) 汉字。CJK 是《GB2312-80》、《BIG5》等字符集的超集。 ---
UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是一种针对 Unicode 的可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符,且其编码中的第一个字节仍与 ASCII 相容,这使得原来处理 ASCII 字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他储存或传送文字的应用中,优先采用的编码。
UTF-8 使用一至四个字节为每个字符编码:
128 个 US-ASCII 字符只需一个字节编码(Unicode 范围由 U+0000 至 U+007F)。
带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode 范围由 U+0080 至 U+07FF)。
其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码。 其他极少使用的 Unicode 辅助平面的字符使用四字节编码。
UTF-8的设计有以下的多字符组序列的特质:
单字节字符的最高有效位元永远为0。
多字节序列中的首个字符组的几个最高有效位元决定了序列的长度。最高有效位为110的是2字节序列,而1110的是三字节序列,如此类推。
多字节序列中其余的字节中的首两个最高有效位元为10。
UTF-8的编码方式
UTF-8是UNICODE的一种变长度的编码表达方式 《一般UNICODE为双字节(指UCS2)》,它由Ken Thompson于1992年建立,现在已经标准化为RFC 3629。UTF-8就是以8位为单元对UCS进行编码,而UTF-8不使用大尾序和小尾序的形式,每个使用UTF-8储存的字符,除了第一个字节外,其余字节的头两个位元都是以 \"10\" 开始,使文字处理器能够较快地找出每个字符的开始位置。
但为了与以前的ASCII码相容(ASCII为一个字节),因此 UTF-8 选择了使用可变长度字节来储存 Unicode:
Unicode和UTF-8之间的转换关系表 UCS-4编码 UTF-8字节流 U-00000000 – U-0000007F: 0xxxxxxx
U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
在ASCII码的范围,用一个字节表示,超出ASCII码的范围就用字节表示,这就形成了我们上面看到的UTF-8的表示方法,这様的好处是当 UNICODE文件中只有ASCII码时,储存的文件都为一个字节,所以就是普通的ASCII文件无异,读取的时候也是如此,所以能与以前的ASCII文件相容。
大于ASCII码的,就会由上面的第一字节的前几位表示该unicode字符的长度,比如110xxxxxx前三位的二进制表示告诉我们这是个 2BYTE的UNICODE字符;1110xxxx是个三位的UNICODE字符,依此类推;xxx 的位置由字符编码数的二进制表示的位填入。越靠右的 x 具有越少的特殊意义。只用最短的那个足够表达一个字符编码数的多字节串。注意在多字节串中,第一个字节的开头\"1\"的数目就是整个串中字节的数目。。
ASCII字母继续使用1字节储存,重音文字、希腊字母或西里尔字母等使用2字节来储存,而常用的汉字就要使用3字节。辅助平面字符则使用4字节。
在UTF-8文件的开首,很多时都放置一个U+FEFF字符(UTF-8 以 EF,BB,BF 代表),以显示
因篇幅问题不能全部显示,请点此查看更多更全内容