420 likes | 611 Views
第五章 中文信息处理. 汉字信息的表示. 5.2 中文信息在计算机内的表示. 在计算机内表示中文信息的最早在 IBM 、富士通、日立等计算机生产厂家的计算机中开始,但采用的编码形式互不兼容。 为了能使汉字能够在计算机中通行,国际标准组织( ISO )、国际电子电气工程师协会( IEEE )以及各个使用汉字的国家和地区,在计算机技术发展中,都制定了各种各样的汉字编码字符集。 ISO/IEC 2022 定义了七位代码和八位代码的空间及其代码空间扩充的技术。 绝大多数计算机系统所采用的字符集,都是以 ISO/IEC 2022 为基础的。
E N D
第五章 中文信息处理 汉字信息的表示
5.2中文信息在计算机内的表示 • 在计算机内表示中文信息的最早在IBM、富士通、日立等计算机生产厂家的计算机中开始,但采用的编码形式互不兼容。 • 为了能使汉字能够在计算机中通行,国际标准组织(ISO)、国际电子电气工程师协会(IEEE)以及各个使用汉字的国家和地区,在计算机技术发展中,都制定了各种各样的汉字编码字符集。 • ISO/IEC 2022定义了七位代码和八位代码的空间及其代码空间扩充的技术。 • 绝大多数计算机系统所采用的字符集,都是以ISO/IEC 2022为基础的。 • 一般汉字在计算机内部的表示都是通过扩充编码长度实现的。
汉字的几种通行名称 • Hanzi,Hantsu,汉字 • Ideographic character,表意字符,中文字符 • Kanji-日文中的叫法 • Hanja-朝鲜文中的叫法 • CJK-中日韩通用字符集 • Unihan
ISO/IEC 2022单八位代码空间图 • 00-31(十六进制为00H-1FH)为第一个控制字符集C0H的编码区域 • 32(十六进制为20H)为Space • 127(十六进制为7FH)为DELETE符; • 128-160(十六进制为80H-A0H)为第二个控制字符集C1的编码区域 • 33-126 ( GL ) 和161-254 (GR) 则是两个图形字符的编码区域
ISO/IEC 2022的体系结构特点 • 代码空间狭小,凡是C0, C1控制字符相关的空间都回避不用;汉字编码没有利用80 (十六进制) 以上的空间。 • 按国家/地区分别编码。 • 需要一整套复杂的指明/调用的控制功能来区分代码空间中的字汇。
汉字代码 • 汉字内码是真实世界的汉字信息在计算机系统中的最基本表示。 • 根据汉字信息在计算机内部使用的目的和存储的方式,汉字代码有各种不同的形式和称谓。 • 最常使用的有交换码和内码等。
汉字交换码 • 汉字交换码是用于信息交换的汉字代码。 • 可以用双字节、3字节和4字节表示。 • 汉字交换码一般不能直接用于信息处理。 • 例如,在GB2312中,“码”字的交换码为十六进制的42h/6Bh。无法与ASCII码的“Bk”相区别。 • 在实际使用中,交换码必须转换为机内码。 • 但是在国际标准ISO/IEC 10646和Unicode中,交换码与处理码可以是一致的,因为此时的ASCII码也采用双字节表示。
汉字区位码 • 汉字区位码是汉字交换码的另一种表示形式。 • 在GB2312中,汉字交换码所占的方阵大小为94×94,若纵向定义为区号(取值范围为十进制数的0-94),横向定义为位号(取值范围为十进制数的0-94),则两个坐标明确了一个汉字的位置。区号和位号的编号都是从1开始,到94结束。 • 例如,在GB2312-80中,“ 码”字所在的区号为“34”,位号为“75”,故其区位码为“3475”。
汉字区位码 GB2312-80汉字编码 • 国标交换码: • 问题:信息通信中,汉字的区位码与通信使用的控制码(00H~1FH)发生冲突。 • 解决方案:为了避免汉字区位码与通信控制码的冲突,ISO2022规定,每个汉字的区号和位号必须分别加上32(即二进制0010 0000)。 • 经过这样处理得到的代码称为汉字的“国标交换码”(简称交换码)。因此,“大”字的交换码是: 00110100 01110011。
汉字机内码 • 用于信息处理的汉字代码,也称汉字处理码。 • 汉字的内码长度可以不同,通常汉字内码是双字节。 • 对于单字节操作系统内核,汉字代码为了与ASCII码相区别,往往把两字节(至少把第一个字节)的最高位(Bit 7)置为1。
汉字机内码 GB2312-80汉字编码 • 机内码: • 问题:文本中的汉字与西文字符经常是混合在一起使用的,汉字信息如不予以特别的标识,它与单字节的标准ASCII码就会混淆不清。 • 解决方法:把一个汉字看作两个扩展ASCII码,使表示GB2312汉字的两个字节的最高位(b7)都等于“1”。这种高位为l的双字节(16位)汉字编码就称为GB2312汉字的“机内码”,又称内码。 如:“大”字的内码是:10110100 11110011(B4F3)
交换码、 区位码和内码关系 • 在GB2312-80中,交换码、 区位码、处理码之间存在着简单的转化关系。 • 设交换码为JH(J为高位,H为低位,为十六进数),区位码为QW(Q为区号,W为位号,为十进制数),处理码为CL(C为高位,L为低位,为十六进制数),则: • J=Q+32 --再转换为十六进制数 • H=W+32 --再转换为十六进制数 • C=J+80H • L=H+80H
汉字编码字符集 • 按照一组无歧义的规则而定义的汉字字汇的有序集合。其中每一个汉字与它的代码表示之间具有一一对应关系。 • 在信息处理技术中汉字编码字符集用于汉字信息的表示、交换、传输、处理、存储、输入及显示。 • 在国际标准化组织ISO的定义中,“无歧义的规则”很重要,制定这些规则的目的是为了确保编码的唯一性,避免重码。
00 FF 00 FF 00 FF 00 FF GB2312 GBK-95 00 FF 00 FF 27484汉字 GB18030-2000 虚线外的汉字,4字节表示 汉字编码的关系 GB2312-80 6763汉字 2个扩充的汉字字符集 GB12345-90 GBK-95 20902汉字 GB18030-2000
主要汉字(文字)编码标准与规范 • ASCII(英文) • GB2312 • GBK • GB13000 • GB18030 • BIG5 • Shift_JIS • ISO/IEC 10646 • Unicode
ASCII码 • 美国信息交换标准编码(“美标”) • 用从0到127的128个数字来代表信息的规范编码 • 包括33个控制码,一个空格码,和94个形象码 • 形象码中包括了英文大小写字母,阿拉伯数字,标点符号等 • 国际上大部分电脑的通用编码
国标、区位 • 国标:中华人民共和国国家标准信息交换用汉字编码 • GB 2312 – 80(信息交换用汉字编码字符集 基本集(又称为GB0) • GB 13000 –93(信息技术 通用多八位编码字符集(UCS)第一部分) • GB 18030-2000 (信息技术 信息交换用汉字编码字符集 基本集的扩充 ) • 国标(GB2312-80)表(基本表)把七千余汉字、以及标点符号、外文字母等,排成一个94行、94列的方阵 • 每一横行叫一个“区”,每个区有九十四个“位” • 一个汉字在方阵中的坐标,称为该字的“区位码” • 例如“中”字在方阵中处于第54区第48位,它的区位码就是5448
区位码表 • 区位码来源于信息交换用汉字编码字符集(基本集)国家标准(GB2312-80),该标准收汉字6763个,第一级3755个,位于16至55区,55区的最后5个字符没有定义;第二级3008个,位于56至87区 • 第一级汉字按照汉语拼音字母顺序排列,同音字以笔形顺序横(一)、直(丨)、撇(丿)、点(丶)、折(乙)为序。起笔相同按第二笔,依次类推。 • 第二级汉字按部首排序,本标准采用的部首与一般字典用的部首基本相同,略有改变。部首次序及同部首字按笔划数排列,同笔划数的字以笔形顺序横(一)、直(丨)、撇(丿)、点(丶)、折(乙)为序。起笔相同按第二笔,依次类推。 • 查表时先查区号,再查行、列,例如:“、”是0102,“蔼”是1610。
区位码表(GB2312-80) • 1-9区:682个符号(2、4、5、6、7、8、9区有空位164个) • 包括:一般符号(间隔、标点、运算、制表)202个 • 序号60个 • 数字22个 • 希腊字母48个 • 俄文字母66个 • 汉语拼音26个 • 拉丁字母52个 • 日文假名169个 • 汉语注音37个 • 10-15区:空 • 88-94区:空 • 16-87区:6763个汉字 • 16-55区:一级汉字3755个 • 55区有5个空位,从89-94 • 56-87区:二级汉字3008个 • 一级汉字按照音、笔形排列 • 二级汉字按照部首排列
国标、区位、“准国标”、机内码 • 94:美标中形象码的总数,33--126 • 汉字区、位码各加上32,就会与美标形象码的范围重合,称为该字的“国标码”,与其相对应的两个美标符号,为该字的“国标符” • 如何区分国标符与美标符:国标码的两个数字各加上128,称“准国标”或“机内码” • 机内码=(区位码)H + 8080H +2020H
BIG-5 • Big5编码是台湾地区信息业常用的汉字编码字符集的一种代码空间,可直接用作处理码。 • 台湾、香港、澳门等地使用 • 取码范围: • 高位:0x81-0xfe • 低位:0x40-0x70,0xa1-0xfe • Big5编码空间在一个94*157的矩阵中。Big5有94个区,每个区有157个位,因此最多可以容纳14758个码元。 • Big5中收录了13494个字符(其中,13053个汉字和441个非汉字图形字符)。
ISO/IEC 10646 • 一个国际标准编号,国际标准化组织(ISO)1993年正式颁布 • 英文全称:Information technology - Universal Multiple - Octet Coded Character Set,简称UCS • 中文全称:信息技术--通用多八位编码字符集,亦称大字符集 • 宗旨:全球所有文种统一编码
Unicode • 英文Universal Code的缩略语 • 统一编码 • 是对国际标准ISO/IEC 10646编码的一种称谓 • 是一个企业联盟集团的名称,由美国的HP、Microsoft、IBM、Apple等几家知名的大型计算机企业所组成,成立该集团的宗旨就是要推进多文种的统一编码 • 就内容而言,Unicode和ISO/IEC 10646是一致的,并行的
ISO10646/Unicode • ISO10646的第0群组第0字面(群和面的值都为00h)称为「基本多语种文字面」(Basic Multi-lingual Plane, BMP),其编码字元与Unicode相同。 • ISO10646的BMP和Unicode的编码字符。
ISO/IEC 10646中CJK汉字组成 • CJK统一编码汉字(20902) • CJK扩充集A(6585) • CJK扩充集B(4万--)
ISO 10646/Unicode的实现及其重要意义 • 在全球范围内建立起实时、无障碍的信息交换模式 • 推动了汉字典籍的数字化 • 为数字化图书馆的建立铺平了道路 • 为弘扬汉字文化提供了舞台 • Single Binary技术的诞生:同一套基本程序用于多个语言环境的技术 • 使汉字关联活起来:正-异关联、中-日关联、繁-简关联,正-讹关联以及古今、新旧字形关联
GBK • 汉字内码扩展规范,Rules/Specifications defining the extensions of internal codes for Chinese ideograms • 为了推进Unicode的实施,同时也是为了向下兼容,由电子部与国家技术监督局联合颁布 • 在保持GB2312原貌的基础上,将其字汇扩充与ISO 10646中的CJK等量,同时也包容了台湾的工业标准Big5码汉字,此外还为用户留了1894个码位的自定义区 • 2字节汉字编码 • 在内码上兼容GB2312-80 • 在字汇上兼容GB13000/ISO10646 • 是GB2312向GB13000过渡的中间代码 • 收录21886个汉字和符号
GB18030-2000 • 信息交换用汉字编码字符集基本集的扩充 • 2000-3-17发布 • 2001年9月作为国家标准强制实施 • 2000年ISO发布了ISO 10646-1:2000(Unicode 同步定义为Unicode 3.0),主要是增加了称为中日韩统一汉字Extension A的6,582个字符。 • GB18030-2000编码标准就在原来的 GB2312-1980 编码标准和 GBK 编码标准的基础上进行扩充,增加了四字节(32位)部分的编码。 • 整合GBK的汉字后到达了27484个汉字,总编码空间超过150万个码位 • GB18030标准采用单字节、双字节和四字节三种方式对字符编码 • GBK的替代、超集
GB18030-2000 • 完全包含CJK(Unihan) Extension A • 与GBK完全兼容(code- and character- compatible)的同时,为所有其它Unicode码点提供了空间 • 定义了4字节编码机制
GB18030-2000码位范围分配表 • 2字节编码共23940个码位 • 4字节编码共超过150万个码位
UTF • Unicode transformation format • UCS transformation format • 从Unicode码点到唯一字节序列的映射算法,一一映射,保证无损转换 • UTF-16 • UTF-8 • UTF-32