曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3813|回复: 0
打印 上一主题 下一主题

中文字符编码 GB2312,GBK,GB18030 简介

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-6-12 19:43:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了使计算机可以显示中文字符,所以必须设计一套中文字符编码。

早在 1980 年,GB2312 被设计出来,总共收录 7445 个字符,包括 6763 个汉字和 682 个其它符号。汉字区的内码范围高字节从 B0-F7,低字节从 A1-FE,也就是总共可以显示 (0xF7 - 0xB0 + 1) * (0xFE - 0xA1 + 1) 个汉字,即 72 * 94 = 6768 个,但是有 5 个空位(D7FA, D7FB, D7FC, D7FD, D7FE),这 5 个空位不显示汉字,所以可以显示的汉字共有 6768 - 5 = 6763 个

由于 GB2312 支持汉字太少,比如对于人名、古汉语等方面出现的罕用字 GB2312 并不能支持。时隔十五年后,即 1995 年时又制定了 GBK1.0。GBK1.0 一共收录了 21886 个字符。这个字符集分为两大区:汉字区 和 图形符号区;其中汉字区共收录 21003 个字符。

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

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

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

01-09区为特殊符号。

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

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

10-15区及88-94区则未有编码。
举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。

字节结构
在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。浏览器编码表上的“GB2312”,通常都是指 “EUC-CN” 表示法。

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

“高位字节”使用了 0xA1-0xF7 (把01-87区的区号加上0xA0),“低位字节”使用了 0xA1-0xFE (把01-94加上 0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。

例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。

另外,GB 内码的存储格式始终是 big endian(大端格式),即高位在前,低位在后。

附 GB2312 简体中文编码表(PDF 格式)
网盘下载
在上面附件所示的编码表中,每一个区都会明显的以几行空白间隔开来。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-19 06:57 , Processed in 0.082268 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表