ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 字符集编码知识详解

字符集编码知识详解

原创 Linux操作系统 作者:oracle_kai 时间:2008-01-31 11:39:34 0 删除 编辑

字符集编码知识详解

ASCII

    ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。

    只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。

 

ASCII码表 

在计算机中,通常用一个字节(8)存放一个字符的ASCII

00000000~01111111 (高位补0

’a’ ascii 编码97 即为01100001

汉字编码 

在计算机中,通常用扩展的ASCII码作为汉字编码

10000000~11111111 (最高位置1

  的编码为 214 208 11010110  11010000’

 

 

Gb231280

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

 

GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个。GB2312规定"对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示",习惯上称第一个字节为"高字节",第二个字节为"低字节"。GB2312-80包含了大部分常用的一、二级汉字,和9区的符号。该字符集是几乎所有的中文系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位0xa1-0xfe,低位也是0xa1-0xfe;汉字从0xb0a1开始,结束于0xf7fe。

 

GB2312将代码表分为94个区,对应第一字节(0xa1-0xfe);每个区94个位(0xa1-0xfe),对应第二字节,两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码。01-09区为符号、数字区,16-87区为汉字区(0xb0-0xf7),10-15区、88-94区是有待进一步标准化的空白区。GB2312将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。故而GB2312最多能表示6763个汉字。

 

编码范围:0xA1A1--0xFEFE

汉字范围:0xB0A1--0xF7FE

编码方式:

GB2312 "对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示",习惯上称第一个字节为"高字节",第二个字节为"低字节"

GB2312的编码范围为2121H-777EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。

 

GB2312(1980)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。

 

背景知识:

GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集--基本集》,由国家标准总局发布,198151日实施,通行于大陆。新加坡等地也使用此编码。该字符集是几乎所有的中文系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位0xa10xfe,低位也是0xa1-0xfe;汉字从0xb0a1开始,结束于0xf7fe16-87区为汉字区(0xb0-0xf7)。故而GB2312最多能表示6763个汉字。

备注:

·GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上A0

·在DBCS中,GB内码的存储格式始终是big endian,即高位在前。

· GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所

GBKGB18030的低字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。

 

GBK编码

GBK是GB2312-80的扩展,是向上兼容的。它包含了20902个汉字

范围:0×8140 - 0xFEFE

汉字范围:

GBK/2OXBOA1-F7FE, 收录 GB2312 汉字 6763 个,按原序排列;

GBK/3OX8140-AOFE,收录 CJK 汉字 6080 个;

GBK/4OXAA40-FEAO,收录 CJK 汉字和增补的汉字 8160 个。

编码方式:

GBK 亦采用双字节表示,总体编码范围为 8140-FEFE 之间,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 XX7F 一条线。

字符集:

GBK 共收入21886个汉字和图形符号,包括:

GB2312 中的全部汉字、非汉字符号;

BIG5 中的全部汉字;

ISO-10646 相应的国家标准 GB13000 中的其它 CJK 汉字;

以上合计 20902 个汉字。

其它汉字、部首、符号,共计 984 个。

背景知识:

GBK 向下与 GB2312 完全兼容,向上支持 ISO-10646 国际标准,是一种过渡时期的编码实现方式。

GBKGB2312-80的扩展,是向上兼容的。它包含了20902个汉字,其编码范围是0x8140-0xfefe,剔除高位0x80的字位。其所有字符都可以一对一映射到Unicode2.0

备注:

微软公司自Windows 95 简体中文版开始支持 GBK 代码,标准叫法是 Windows codepage 936,也叫做 GBK(国家标准),它也是 8-bit 的变长编码。据我所知 GBK从来没成为正式的国家标准,只不过因为Windows 的普及,它已经成为事实上的标准了。但目前的多数搜索引擎都不能很好地支持 GBK 汉字。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10159839/viewspace-166538/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-20

  • 博文量
    48
  • 访问量
    175085