首页 理论教育 深入剖析字符集种类和特点

深入剖析字符集种类和特点

时间:2023-10-30 理论教育 版权反馈
【摘要】:字符集种类较多,每个字符集包含的字符个数不同,常见字符集有ASCII字符集、GB2312字符集、BIG5字符集、GB 18030字符集、Unicode字符集等。ASCII码使用指定的7位或8位二进制数组合来表示128种或256种可能的字符。GB 2312—1980是中国国家标准的简体中文字符集。5)汉字字符,并规定一级汉字3755个,二级汉

深入剖析字符集种类和特点

1.字符

字符(Character)是各种文字和符号的总称,包括各种语言字母或文字、标点符号图形符号、数字等。

2.字符集

字符集(Character Set)是多个字符的集合。

计算机要准确地处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

第一种编码类型是单字节字符集(Single-Byte Characte rSet,SBCS)。在这种编码模式下,所有的字符都只用一个字节表示。ASCII字符集是SBCS。

第二种编码模式是双字节字符集(Double-Byte Character Set,DBCS)。在双字节字符集中,字符串中的每个字符由1或2个字节组成,因此也叫做多字节字符集(Multibyte Character Set,MBCS)。一个MBCS编码包含一些一个字节长的字符,而另一些字符大于一个字节的长度。DBCS的例子是亚洲的字符集(如汉语、日语朝鲜语等),包含了ANSI(即ASCII值为0~255之间的字符)字符集,当为ANSI字符时,存放于文件中占用的是一个字节;如果是非ANSI字符,则占用两个字节。

第三种编码模式是Unicode。Unicode是一种所有的字符都使用两个字节编码的编码模式。Unicode字符有时也被称作宽字符,因为它比单字节字符的数据要宽(使用了更多的存储空间)。

注意,Unicode不能被看做MBCS。MBCS的独特之处在于它的字符可使用不同长度的字节编码。

字符集种类较多,每个字符集包含的字符个数不同,常见字符集有ASCII字符集、GB2312字符集、BIG5字符集、GB 18030字符集、Unicode字符集等。

3.字符码

字符码(Character Code)是为了能方便地检索到字符,给字符赋予检索数值而得到的代码,如ASCII码。

4.ASCⅡ字符集

ASCII字符集的字符包括:

1)0~31及127(共33个)是控制字符通信专用字符,如控制符LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符包括SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10/0x0A和13/0x0D分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

2)32~126(共95个)是可显示的字符,其中32是空格,48~57为0~9共10个阿拉伯数字,65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

同时还要注意,在标准ASCII中,其二进制码值最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

5.ASCII码

ASCII码全称为美国标准信息交换代码(American National Standard Code for Information Interchange),是由美国国家标准学会(American National Standard Institute,ANSI)制定的。ASCII是标准的单字节字符编码方案,用于基于文本的数据,起始于20世纪50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,后来被国际标准化组织(Inter-national Organization for Standardization,ISO)定为国际标准,称为ISO646标准,适用于所有拉丁文字字母。

ASCII码使用指定的7位或8位二进制数组合来表示128种或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0~9、标点符号,以及在美式英语中使用的特殊控制字符。

由于标准ASCII字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了ISO2022标准,它规定了在保持与ISO646兼容的前提下将ASCII字符集扩充为8位代码的统一方法。ISO陆续制定了一批适用于不同地区的扩充ASCII字符集,每种扩充ASCII字符集分别可以扩充128个字符,这些扩充字符的编码均为高位为1的8位代码(即十进制数128~255),称为扩展ASCII码。ASCII扩展字符集使用8位(8bit)表示一个字符,共256字符。与ASCII字符集相比,ASCII扩展字符集扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。

6.GB 2312—1980字符集

GB 2312—1980字符集全称为《信息交换用汉字编码字符集 基本集》,由原国家标准总局发布,1981年5月1日实施。

GB 2312—1980是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要,在中国大陆和新加坡获得推广和广泛使用。

GB 2312—1980收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母等共7445个图形字符。其中包括6763个汉字(一级汉字3755个,二级汉字3008个);另外还包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母、制表符号、数学符号、数字符号在内的682个全角字符。

GB 2312—1980中文字符集的字符包括:

1)英数字符,包括常用符号34个,数字10个,大、小写英文字母各26个。它们所对应的7位编码就是ASCII码。

2)国际字符,例如希腊字母、俄文字母、发音记号等。

3)ANK字符,它们是全角的字母(Alphabet)、数字(Number)、片假名(Kana)等。

4)图形字符,包括矩形、正方形、菱形、圆、梅花、心形等常用图形。

5)汉字字符,并规定一级汉字3755个,二级汉字3008个。

GB 2312—1980字符集采用双字节表示,两个字节中前面的字节为第一字节,后面的字节为第二字节。习惯上称第一字节为“高字节”,而称第二字节为“低字节”。

7.区位码、国标码

根据汉字的国家标准GB 2312—1980,用两个字节(16位二进制数)表示一个汉字,每个字节只用7位(最高位均为1),但使用二进制数容易出错,比较困难,因而在使用中都将其转换为十六进制数使用,即国标码。国标码是一个4位十六进制数。区位码则是一个4位的十进制数,每个国标码或区位码都对应着一个唯一的汉字或符号,但因为十六进制数我们很少用到,所以常用的是区位码,它的前两位叫做区码,后两位叫做位码。

GB 2312—1980将其中的汉字和其他符号按照一定的规则排列成为一个大的表格,在这个表格中,第一(横)行称为一个“区”,每一(竖)列称为一个“位”,整个表格共有94区,每区有94位,并将“区”和“位”用十进制数字进行编号:即区号为01~94,位号为01~94。

在区位码中汉字和其他符号的编排规则是:

1)第01~09区,分别存放了682个标点符号、运算符号、制表符号、数字、序号、英文字母、俄文字母、日文假名、希腊字母、汉语拼音字母、汉语注音字母等。

2)第10~15区,有待扩展的空白区。

3)第16~55区,按照汉语拼音的顺序依次存放了3755个一级汉字(最常用的汉字)。

4)第56~87区,按照部首顺序依次存放了3008个二级汉字(次常用的汉字)。一、二级汉字合计共6763个。

5)第88区以后,有待扩展的空白区。

如果知道某个汉字的区位码,只要将区号和位号分别加上160,然后分别转换为二进制数,区码在前、位码在后,就可以得到该汉字的十六位的机内码(国标码)。如“啊”字的区位码是1601,区号16+160=176→0xB0,位号01+160=161→0xA1,即“啊”字的国标码为0xB0A1。

8.汉字编码

(1)汉字机内码

根据国标码的规定,每一个汉字都有了确定的二进制代码,但是这个代码在计算机内部处理时会与ASCII码发生冲突,为解决这个问题,把国标码的每一个字节的首位上加1。由于ASCII码只用7位,所以,这个首位上的“1”就可以作为识别汉字代码的标志,计算机在处理到首位是“1”的代码时把它理解为是汉字的信息,在处理到首位是“0”的代码时把它理解为是ASCII码。经过这样处理后的国标码就是机内码。(www.xing528.com)

(2)汉字交换码

计算机内部处理的信息,都是用二进制代码表示的,汉字也不例外,而二进制代码使用起来是不方便的,于是需要采用信息交换码。原国家标准总局于1981年发布了中华人民共和国国家标准GB2312—1980《信息交换用汉字编码字符集 基本集》,即国标码。

(3)汉字字形码

字形码是汉字的输出码。输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。

为了能准确地表达汉字的字形,对于每一个汉字都有相应的字形码,目前大多数汉字系统中都是以点阵的方式来存储和输出汉字的字形。所谓点阵就是将字符(包括汉字图形)看成一个矩形框内一些横竖排列的点的集合,有笔画的位置用实黑点表示,没笔画的位置用空白点表示。在计算机中用一组二进制数表示点阵,用0表示白点,用1表示黑点。把这一组二进制数组合起来的编码就是该字的字形码,也就是这个字的字模。

一般的汉字系统中汉字字形点阵有16×16、24×24、48×48几种,点阵越大对每个汉字的修饰作用就越强,打印质量也就越高。通常用16×16点阵来在显示器上显示汉字,每一行上的16个点需用两个字节表示,一个16×16点阵的汉字字形码需要2×16=32个字节表示。

(4)汉字地址码

汉字地址码是指汉字字模库存储的汉字字形码的逻辑地址码。汉字字模一般是按国标码顺序存放的。

(5)汉字输入码

输入码也叫外码(相对地,上述的编码叫内码),是用来将汉字输入到计算机中的一组键盘符号。英文字母只有26个,可以把所有的字符都放到键盘上,而使用这种办法把所有的汉字都放到键盘上则是不可能的。所以汉字系统需要有自己的输入码体系,使汉字与键盘能建立对应关系。目前常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等。一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点,每个人可根据自己的需要进行选择。

汉字输入码方案可归结为下列几种类型:

1)汉字拼音编码:以汉语拼音为基础的汉字输入编码,在汉语拼音键盘或经过处理的西文键盘上,根据汉字读音直接键入拼音。

2)汉字字形编码:所有的汉字都由横、竖、撇、点、折、弯有限的几种笔画构成,并且又可分为“左右”、“上下”、“包围”、“单体”有限的几种构架,每种笔画都赋予一个编码并规定选取字形构架的顺序,不同的汉字因为组成的笔画和字形构架不同,就能获得一组不同的编码来表达一个特定的汉字,广泛使用的五笔字型码就属于这一种。

3)汉字直接数字编码:利用一串数字表示一个汉字,电报码就属于这种。

4)整字编码:设置汉字整字大键盘,每个汉字占一个键,类似中文打印机,操作人员选取汉字,机器根据所选汉字在盘面上的位置将其对应编码送入计算机。

9.BIG5字符集

BIG5又称大五码或五大码,1984年由中国台湾“财团法人信息工业策进会”和五家软件公司包括宏碁(Acer)、神通(MiTAC)、佳佳、零壹(ZeroOne)、大众(FIC)创立,故称大五码。

BIG5码的产生,是因为当时中国台湾不同厂商各自推出不同的编码,如倚天码、IBMPS55、王安码等,彼此不能兼容;另一方面,中国台湾当时尚未推出正式的汉字编码,而中国内地的GB2312—1980编码亦未收录繁体汉字。

BIG5字符集共收录13053个中文字,该字符集在汉字繁体字使用地区(中国香港、澳门、台湾地区)使用。

BIG5码使用了双字节存储方法,以两个字节来编码一个字。第一个字节称为“高位字节”,第二个字节称为“低位字节”。高位字节的编码范围为0xA1~0xF9,低位字节的编码范围为0x40~0x7E及0xA1~0xFE。

BIG5字符集的字符包括:

1)0xA140~0xA3BF,存放了标点符号、希腊字母及特殊符号等;

2)0xA259~0xA261,存放了双音节度量衡单位用字,如兙、兛、兞、兝、兡、兣、嗧、瓩、糎等;

3)0xA440~0xC67E,存放了常用汉字,先按笔画再按部首排序;

4)0xC940~0xF9D5,存放了次常用汉字,亦是先按笔画再按部首排序。

尽管BIG5字符集内包含一万多个字符,但是没有考虑社会上流通的人名、地名、方言化学及生物科等用字,也没有包含日文平假名及片假名字母。例如中国台湾地区视“着”为“著”的异体字,故没有收录“着”字;康熙字典中的一些部首用字(如“亠”、“疒”、“辵”、“癶”等)、常见的人名用字(如堃、煊、栢、喆等)也没有收录到BIG5字符集之中。

10.GB 18030—2000字符集

GB 18030—2000《信息交换用汉字编码字符集 基本集的扩充》是我国政府于2000年3月17日发布的新的汉字编码国家标准,2001年8月31日后在我国市场上发布的软件和信息设备必须符合该标准。

GB 18030—2000字符集标准的出台经过广泛参与和论证,来自于国内外知名信息技术行业的公司,由原信息产业部和原国家质量技术监督局联合实施。

GB 18030—2000字符集标准解决了汉字、日文假名、朝鲜语和中国少数民族文字组成的大字符集计算机编码问题。该标准的字符总编码空间超过150万个编码位,收录了27484个汉字,覆盖中文、日文、朝鲜语和中国少数民族文字;满足中国、日本韩国等东亚地区信息交换多文种、大字量、多用途、统一编码格式的要求;并且与Unicode3.0版本兼容,填补Unicode扩展字符字汇“统一汉字扩展A”的内容;并且与以前的国家字符编码标准(GB 2312—1980、GB 13000.1—1993)兼容。

GB 18030—2000标准采用单字节、双字节和四字节三种方式对字符进行编码。

单字节部分使用0x00~0x7F码(对应于ASCII码的相应码)。

双字节部分,首字节码为0x81~0xFE,尾字节码位分别为0x40~0x7E和0x80~0xFE。双字节部分收录内容主要包括GB 13000.1—1993全部CJK汉字20902个、有关标点符号、表意文字描述符13个、增补的汉字和部首/构件80个、双字节编码的欧元符号等。

四字节部分采用GB/T11383—1989未采用的0x30~0x39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0x8130~0xFE39,其中第一、三个字节编码码位均为0x81~0xFE,第二、四个字节编码码位均为0x30~0x39。四字节部分收录了上述双字节字符之外的,包括CJK统一汉字扩充A在内的GB13000.1—1993中的全部字符。

11.Unicode字符集

Unicode字符集编码是Universal Multiple-Octet Coded Character Set(通用多8位编码字符集)的简称,是由一个名为Unicode学术学会(Unicode Consortium)的机构制定的字符编码系统,支持现今世界各种不同语言的书面文本的交换、处理及显示。该编码于1990年开始研发,1994年正式公布,最新版本是2005年3月31日发布的Unicode 4.1.0。

Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

Unicode标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,例如字母“A”的编码为0x0041,字符“?”的编码为0x20AC,所以“A”的编码书写为“U+0041”,“?”的编码书写为“U+20AC”。

UTF-8是Unicode的其中一个使用方式。UTF是Unicode Translation Format的缩写,即把Unicode转做某种格式的意思。

UTF-8便于不同的计算机之间使用网络传输不同语言和编码的文字,使得双字节的Unicode能够在现存的处理单字节的系统上正确传输。

UTF-8使用可变长度字节来存储Unicode字符,例如ASCII字母继续使用1字节存储;重音文字、希腊字母或西里尔字母等使用2字节来存储;而常用的汉字就要使用3字节;辅助平面字符则使用4字节。

UTF-32、UTF-16和UTF-8都是Unicode标准的编码字符集的字符编码方案,UTF-16使用一个或两个未分配的16位代码单元的序列对Unicode代码点进行编码;UTF-32将每一个Unicode代码点表示为相同值的32位整数。

Unicode是世界性的字符集,几乎包含了世界上的所有字符,每个字符都有一个单一的Unicode值。Unicode值也是占用两个字节的,但不同的是它虽然也包含了标准的ANSI字符值,但是ANSI字符只占用一个字节,Unicode会自动在ANSI值后加入一个值为0的字节。比如说一个ANSI值为0x45的字符,以Unicode形式存放则为“U+4500”。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈