【非数值数据的编码】西文字符和汉字的编码表示 汉字国标码、机内码详细理解

时间:2024-03-16 11:56:09

西文字符

概念

  西文字符由拉丁字母、数字、标点符号及一些特殊符号组成,称为“字符

  所有字符组成的集合称为“字符集

字符不能在计算机中直接处理,需要对其进行数字化编码,字符集中每个字符都有一个编码(二进制0/1序列)

  由字符二进制编码构成的字符集称为“码表

  字符集有很多种,每个字符集的编码方式也是多种多样,目前最广泛的字符集及其编码时ASCII码
【非数值数据的编码】西文字符和汉字的编码表示 汉字国标码、机内码详细理解

  ASCII码表中每个字符都是由7个二进制位b5b4b3b2b1b0表示,其中b6b5b4位高位部分,b3b2b1b0为低位部分

  计算机中一个字符实际存储为8位,在字符的七位存储之上添加了用于奇偶校验的奇偶校验位b7,一般情况下该位为0

ASCII码表特点

  字符0~ 9这十个数字字符高三位均为011,低四位分别为0000~ 1001,低四位为0 ~ 9的8421码

  字母排序也符合正常的字母排序规则,且大小写字母差别仅在b5位上,该位为0则为大写

西文字符特点

  西文字符是一种拼音文字,用有限几个字母可拼写出所有单词

  西文字符只需对有限个字母和数学符号、标点符号等辅助字符编码

  西文字符所有字符总数不超过256个,使用7或8个二进位可表示

西文字符表示(常用编码为7位ASCII码)

  十进制数字:0/1/2…/9
  英文字母:A/B/…/Z/a/b/…/z
  专用符号:+/-/%/*/&/……
  控制字符(不可打印或显示)

西文字符操作

  字符串操作,如:传送/比较 等

汉字字符

  中文信息的基本组成单位是汉字,汉字也是字符,但汉字是表意字符,一个字是一个方块图形

  计算机对汉字信息处理需要对汉字本身进行编码,但汉字数量巨大,总数超过6万字,给汉字在计算机内部的表示、汉字的传输与交换、汉字的输入和输出等带来了一系列问题

编码形式

  输入码:对汉字用相应按键进行编码表示,用于输入

  内码:用于在系统中进行存储、查找、传送等处理

  字模点阵或轮廓描述: 描述汉字字模点阵或轮廓,用于显示/打印

输入码

  键盘是面向西文设计的,一个西文字符对应一个按键,因此键盘输入西文字符时非常方便,但汉字是大字符集,专门的汉字输入键盘由于键多、查找不方便、成本高等原因无法使用

  因此将汉字对应一个或几个键来表示,这种对每个汉字用相应的按键进行的编码表示就称为汉字的“输入码”也称为“外码"

汉字输入码的码元(组成编码的基本元素)为西文键盘的某个按键

字符集与汉字内码

  汉字被输入到计算机中后,就按照”内码“的编码格式进行存储、查找、传送等处理

  对于西文字符,其内码就是ASCII码

  为了适应计算机对汉字信息的需求,1981年我国颁布了GB2312-80 字符集,该标准选出了6763个常用汉字,这个标准被称为”国标码“或”国标交换码“

GB2312-80 字符集由三部分组成
① 字母、数字和各种符号,包括英文、俄文、日文平假名与片假名、罗马字母、汉语拼音等共687个
② 一级常用汉字,共3755个,按汉语拼音排列
③ 二级常用汉字,共3008个 ,不太常用,按偏旁部首排列

汉字的区位码

   GB2312-80 字符集为其中每个任意字符规定了一个唯一的二进制代码

  码表由94行(十进制0~93行)、94列组成(十进制0~93列),行号称为区号,列号称为位号

  每个汉字或符号在码表中都有指定的位置,因此有一个唯一的位置码,该位置用区号和位号的二进制代码表示,区号在左、位号在右,各占7位指出汉字在码表中的位置,共14位称为”区位码",区位码指出了汉字在码表中的位置

汉字的国标码

  汉字的区位码并不是国标码(国标交换码),由于信息传输的原因每个汉字的区号和位号必须各自加上32(十进制编号的20H),这样区号和位号各自加上32后对应的二进制代码才是汉字的国标码

汉字内码

  汉字的国标码前后各7位分别用一个字节表示,多出来的一位存储用于奇偶校验的奇偶校验码b7,与ASCII不同国标码的奇偶校验码一般为1,这种双字节(16位)的汉字编码就是其中一种汉字的“机内码

  为了与一字节的ASCII码区分(区分一个字节是一个ASCII码还是半个国标码),使得汉字的两字节中的奇偶校验码(b7)总等于1,以与奇偶校验码总位0的ASCII区分

例:汉字“大”在码表中位于第20行、第83列。
因此区位码为0010100 1010011,在区、位码上各加32得到两个字节编码,即00110100 01110011B=3473H。
前面的34H和字符“4”的ACSII码相同,后面的73H和字符“s”的ACSII码相同
但是,将每个字节的最高位各设为“1”后,就得到其内码:B4F3H (1011010011110011B),因而不会和ASCII码混淆。

汉字的字模点阵码和轮廓表示

  通过计算机处理后的汉字,如果需要在屏幕上显示或用打印件打印必须把汉字机内码转换为人可以阅读的方块字

字库

  每一个汉字的字形都必须预先放在计算机中存储起来,一套汉字(如GB2312国标汉字字符集)的所有字符的形状表述信息集合在一起称为“字形信息库”,简称”字库“

  不同的字形对应着不同的字库,输出每一个汉字时,计算机都需要到字库中找到它的字形表述信息,然后把字形信息送到相应的设备输出

汉字的字形有两种描述方法:字模点阵描述、轮廓描述

  字模点阵描述是指将字库中的汉字或其他字符的字形(字模)用一个其元素由0/1组成的方阵表述,汉字或其他字符中有黑点的地方用1表示,空白处用0表示,将这种描述汉字字模的二进制点阵数据称为汉字的“字模点阵码”

  轮廓描述方法是将汉字笔画的轮廓用一组直线和曲线来勾画,记下每一条直线和曲线的数学表述公式,目前已有两类国际标准:Adobe Tyepel 和 True Type,这种轮廓描述字形的方式精度高,字形大小也可以任意变换