中文信息处理技术专栏

中文信息处理技术专栏


首页  中文信息处理技术专栏

  • ASCII、GB2312和Unicode简介
  • 时间: 2017-05-16    阅读数: 14

  • 1.ASCIIGB2312-80 Unicode

    因为计算机采用二进制的方式存储数据,所以包括数值、文字、图片、声音和动画等信息在存储到计算机内时,都必须要转换为二进制。人们使用的十进制数值数据存储到计算机中时,需要转换为二进制,这一个过程相对简单,也较容易理解。但是人们使用的文字(尤其是中文)是如何存储到计算机中的呢?

    ASCII

    ASCII(美国信息交换标准码)是American Standard Code for Information Interchange的缩写,它是一个用于字符编码的美国标准。它起始于20世纪50年代,在1967年定稿,标准的ASCII采用了7位二进制数来表示一个字符,因此至多只能包含128个符号。ASCII中包括了所有的大写和小写英文字母、数字09、英文标点符号以及控制字符。

    1显示了ASCII中的符号分布情况,这些符号可以被分为图形字符区和控制字符区。图形字符区合计有94个符号,例如:‘a’、‘A’、‘2’、‘%’,控制字符区包含了回车、换行、退格等符号。我们中文的图形字符达到数万个,远远超过94,因此,不能简单地对ASCII进行修改和定制来解决中文在计算机内的表示问题。

    GB2312-80

    为了规范、有效地在计算机中处理汉字,我国在1980年发布了GB2312-80这一汉字编码国家标准,其全称为“信息交换用汉字编码字符集基本集”。GB2312-80采用两个字节来为汉字编码,其编码范围是高位和低位都是在A1HFEH之间,汉字内码从B0A1H 开始,结束于 F7FEH,共收录汉字及其它符号7445个。其中汉字6763个,这些汉字可被分为一级汉字和二级汉字两个子集。一级汉字按照拼音排序,合计3755个;二级汉字按照偏旁部首排序,合计3008个。

    GB2312-80基本满足了当时计算机中处理汉字的需要,按照使用频率来看,它所收录的6763个汉字已经覆盖了中国大陆大约99.75%的汉字使用场合。而且当时的计算机存储空间小、运算速度低,如果使用太大的字符集会导致汉字字形库存储空间巨大,降低信息处理涉及到的各种检索速度,从而不利于使用与推广。

    1 ASCII字符的分布

    Unicode

    由于很多国家和地区都独立设计了在计算机内表示自己所用文字的编码标准,例如:中国大陆有GB2312-80,香港和台湾地区有Big-5,它们之间互相不兼容,从而导致不同国家和地区之间文档的交互出现了很多问题。显然,避免上述互不兼容的一个有效措施是全球采用同一编码,每一个字符只对应一个编码,每一个编码只对应一个字符。1991年,IBMDECSunXeroxAppleMicrosoftNovell等公司联合组织了一个协会,创建了Unicode项目。该项目的一个主要目标是:无论什么平台,无论什么程序,无论什么语言,为每一个字符只提供一个唯一的编码。Unicode并没有寻找方法来解决兼容当时已经存在的各种编码,而是采取了重新编码的方法。

    宏观来看,Unicode 编码系统可分为编码方式和实现方式两个层次。编码方式采用了组(group)、面(plane)、行(row)和位(cell)来给字符编码。其中可以有128个组,面、行和位都可以有256个,所以有128*256*256*256=2147483648个码位,显然Unicode编码空间非常巨大。目前最多被使用的是00面,该面被称为Basic Multilingual Plane(基本多文种平面),简称BMP。该平面一共有256*256=65536个码位,基本满足了目前世界上各种常用字符的使用。虽然每个字符的 Unicode 编码是确定的,但是在实际传输过程中,考虑到不同系统平台以及出于节约存储空间的目的,对 Unicode 编码的实现方式有所不同。Unicode 的实现方式也被称为Unicode转换格式(Unicode Translation Format,简称为 UTF),常见的有UTF-7UTF-8UTF-16UTF-32等。UTF-8是目前互联网上使用较多的实现方式,在Web网页编码中被广泛使用。

    2.GB2312-80区位码与机内码

    GB2312-80在给汉字编码的时候,设计了一个94*94的表格,然后在其中对应的位置放上字符,这样通过行列号就可以唯一地确定每一个字符。GB2312-80的汉字分布情况见图2。一个汉字所在的行列号也被称为区位码,区位码通常用十进制数字表示,共4位数字,前两位为区号,后两位为位号,例如汉字“”在第25区第90位,所以它的的区位码为:2590。图3例举了GB2312-8001区和16区的字符,其中16区是第一个汉字符号区。

    2 GB2312-80 字符分布

    但是区位码并不适合直接在计算机中存储汉字,例如:“码”的区位码为3475,如果直接把3475存储到计算机的两个字节中,将来读取时会和‘4’与‘U’两个字符的ASCII码混淆。显然,此时需要一种手段在计算机中能够有效区分出汉字和西文。计算机分配存储的最基本单位是字节(8位),但是ASCII码通常为7位,因此存储时最高位通常为0。如果保证一个汉字存储在计算机中的的每个字节最高位为1,那么显然就可以很方便地和ASCII字符区分出来。因此实现时,把GB2312-80中一个汉字区位码的区号和位号先分别转换为16进制,然后再分别加上A0H,就得到该汉字的机内码。这样做的优点是很容易区分汉字与西文字符,缺点是实质上缩小了编码空间。根据前面的方法与公式,很容易计算出“码”的机内码为C2EBH

    3.文本文件与二进制文件

    文件是操作系统管理数据的有效手段,也是应用程序最常用的持久存储数据方法之一。从文件的用途我们可以把文件分成:声音文件、动画文件、图片文件等。但就保存文件的格式而言,常把文件分为:二进制文件和文本文件。

    3 GB2312-8001区和16区的字符

    文本文件中只能存储字符,它在存储介质中存放每个字符对应的ASCII码或机内码,二进制文件可以存储各种二进制数据,例如声音、视频等。数字567在文本文件的存储形式表示成,‘5’、‘6’,‘7’三个符号的ASCII,转换成二进制为:001101010011011000110111,共3个字节。如果计算机中一个整型数据占两个字节,567在二进制文件中就保存为0000001000110111,如果一个整型数据占四个字节,那么567在二进制文件中就保存为00000000000000000000001000110111

    Windows所附带的记事本编辑保存的文件属于文本文件。图片、声音、视频等在计算机内通常都是以二进制文件的形式保存,值得注意的是WordWPS等字处理软件编辑保存的默认文件存储格式都属于二进制文件。



地址:苏州市十梓街1号 苏州大学纵横研究所联系电话:0512-65243192电子邮箱:ckc@suda.edu.cn

Copyright © 苏州大学纵横汉字信息技术研究所 2017