计算机中字符编码的表示

概述

计算机处理的数据中,除了数值型的数据以外,还有字符、图形等非数值型的数据。其中字符是日常生活中使用最繁琐的非数值型数据,它包括大小写英文字母、符号以及汉字等。由于计算机只能识别二进制编码,为了能够对字符进行识别和处理,因此要对非数值型数据进行二进制编码表示

西文字符

对西文字符编码最常用的就是ASCLL(美国信息交换标准代码)字符编码,该编码已经被国际标准化组织(ISO)指定为国际标准,是国际上使用最广泛的一种字符编码。标准的ASCLL码采用7位二进制编码,它可以表示2^7即128个字符

计算机内部存储通常以字节(8个二进制位)为单位,因此一个ASCLL码在计算机内实际是用一个字节来表示(8位)。正常情况下,最高位为0,在需要奇偶认证时,这一位可用于存奇偶校验的值,此时称这一位为校验位。ASCLL码其编码范围从00000000B~01111111B。

Ascll码的字符分类分为两大类:
  1. 普通字符又称图形字符,共95个:空格、0~9、a~z、A~Z。

  1. 控制字符又称非图形字符,共33个:0~31和127。

Ascll码表来自:菜鸟教程 https://www.runoob.com/w3cnote/ascii.html

Ascll码的小写字母比相应的大写字母的码值大32,这有利于大、小写字母之间的编码转换。

“空格”=32

“0”=48

“A”=65

“a”=97

小写>大写>数字>空格

汉字字符

与英文字符一样,中文在计算机系统中也要使用特定的二进制符号系统来表示。通过键盘输入汉字时实际是输入汉字的编码信息,这种编码称为汉字的输入码。计算机为了存储、处理汉字、必须将汉字的外部码转换成汉字的内部码。为了将汉字以点阵的形式输出,还要将汉字的内部码转换成汉字的字形码。此外,在计算机与其他系统设备进行信息、数据交流时还要用到国标码(交换码)。汉字编码的转换过程如下图所示:

  1. 输入码/外部码

目前最常用的汉字输入编码主要分为以下三类:

  1. 音码:拼音

  1. 形码:根据字形拆部首、笔画

  1. 数字编码:常用的是区位码,区位码是将国家标准公布局公布的6763个两级汉字分为94个区,每个区分94位(二维数组 94(区) [ 94(位)] )实际上把汉字集排列成二维数组的形式,行为区,列为位,每个汉字在数组中的下标就是区位码。区码和位码各用两位十进制数字表示,因此输入一个汉字需按键4次。例如“中”字位于第54区 48位,区位码是54 48。数字编码的优点是无重码,与内部编码转换比较方便,缺点是代码难以记忆。

  1. 国标码/交换码

也称汉字交换码,简称GB码,一个汉字占2个字节,最大容纳128×128=16384个汉字集字符。根据统计,把最常用的6763个汉字分成两级:一级汉字有3755个,按汉语拼音排列,二级汉字有3008个,按偏旁部首排列。

区位码和国标码之间的转换方法是将一个汉字的十进制区号和十进制位号分别转换成十六进制数,然后再分别加上20H,就成为此汉字的国标码。

计算公式为:国标码=区位码+20H 20H

  1. 机内码

汉字在计算机内使用的编码就是机内码,每个汉字的内码占两个字节,并且每个字节的最高位为1,这是为了避免汉字的内码与西文字符编码(Ascll码)发生冲突,容易区分汉字编码与西文字符编码,同时为了用尽可能少的存储空间来表示尽可能多的汉字而做出的约定。

  1. 最高位为1(为了与ascll码区分)

  1. 一个汉字占2个字节

  1. 机内码=国标码+80H 80H=区位码+A0H A0H

如果题目中没有明确标明区位码的进制,则默认为十进制编码。将十进制区位码转换

为十六进制形式时,必须将区码和位码分开转换。

Ascll、国标码、机内码的比较:

ASCLL码最高位为0,因此ASCLL码的码值小于80H(10000000B),机内码

每个字节最高位为1,且机内码=区位码+A0 A0H,因此汉字机内码的码值大

于A0H(10100000B)。根据码值大小,可以判断编码类型。

一个Ascll码占用一个字节,一个汉字机内码占用两个字节。

  1. 字形码/输出码

汉字字形码也叫汉字字模或汉字输出码,用于汉字在显示屏或打印机输出。汉字字形码通常有两种表示方式:点阵式和矢量式。

  1. 点阵式式表示字形时,计算机用一组二进制数表示一个点阵,点阵中的一个点占用一个二进制位。点阵越大,描述的字形越细致美观,质量越高,所占空间也越大。在计算机中,8个二进制位组成一个字节,它是度量空间的基本单位,因此一个16×16点阵的字形码需要16×16/8=32字节的存储空间,由此可得点阵字形码所占字节数=点阵行数×点阵列数/8

  1. 矢量式式描述汉字字形的轮廓特征,当要输出汉字时,字形大小和计算机的分辨率无关,可以产生高质量的汉字输出,并节省存储空间。用矢量式记录的字体可以任意放缩甚至变形,而不用担心会出现锯齿状边缘。所有汉字的输出码构成了汉字字形库,简称汉字库。

Unicode字符编码,又称万国码
  1. Unicode编码方式

目前实用的Unicode版本对应USC-2,使用16位的编码空间。也就是每个字符占用两个字节,最多可表示2^16即65536个字符,基本可以满足各种语言的使用,而且每个字符都占用等长的两个字节,处理方便。

Unicode可以向后兼容Ascll码。原来用Ascll码能表示的字符,其Unicode码只是在原来Ascll码前加上8个0。

  1. Unicode的实现方式

实现方式也称为Unicode转换格式(UTF)。一个字符的Unicode编码式确定的,但是在实际传输过程中,由于不同系统平台的设计不一致,以及出于节省空间的母的,对Unicode的转换格式分为3种格式:UTF-8、UTF-16、UTF-32。

UTF-8是以字节为单位对Unicode编码,用一个或几个字节来表示一个字符,是一种变长编码,这种方式的最大好处是保留了Ascll字符编码作为他的部分。UTF-18和UTF-16分别是16位和32位编码方式。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值