西文字符在计算机内使用占有1个字节的ASCII码表示。同样每个汉字都需要进行编码,计算机才能处理它们。计算机处理汉字的过程实际上是汉字输入码、汉字信息交换码、汉字机内码、汉字输出码等编码间的转换过程。下面对这些编码做一些介绍,仅仅起抛砖引玉的作用。

一、输入码(外码)

1、输入码也叫外码、输入法编码,是用来将汉字输入到计算机中的一组键盘符号,是作为汉字输入用的编码。

英文字母只有26个,可以把所有的字符都放到键盘上,而使用这种办法把所有的汉字都放到键盘上,是不可能的。所以汉字系统需要有自己的输入码体系,使汉字与键盘能建立对应关系。

2、目前常用的外码分为以下几类:

1)数字编码,比如区位码;

2)拼音编码,比如全拼、双拼、自然码等;

3)字形编码,比如五笔、表形码、郑码等。

二、区位码

整个GB2312字符集分成94个区,每区有94个位,每个区位上只有一个字符,即每区含有94个汉字或符号,用所在的区和位来对字符进行编码(实际上就是字符编号、码点编号),因此称为区位码。

换言之,GB2312将包括汉字在内的所有字符编入一个94 * 94的二维表,行就是“区”、列就是“位”,每个字符由区、位唯一定位,其对应的区、位编号合并就是区位码。比如“中”字在54区48位,所以“中”字的区位码是:5448

注意,GB类汉字编码为双字节编码,因此,45相当于高位字节,82相当于低位字节

三、国标码(交换码)

虽然GB2312为中文编码,我们也要使用到英文字母等字符,况且当时ASCII已经通用,所以要使GB2312能够兼容ASCII才行。为了兼容,GB2312在设计时避开了ASCII字符中的不可显示字符0000 0000 ~ 0001 1111(十六进制为0 ~ 1F,十进制为0 ~ 31)及空格字符0010 0000(十六进制为20,十进制为32)(为什么只避开ASCII中0~32的不可显示字符和空格字符,不避开其他字符呢?后面解释),国标码(又称为交换码)规定表示汉字的范围为(0010 0001,0010 0001) ~(0111 1110,0111 1110),十六进制为(21,21) ~ (7E,7E),十进制为(33,33) ~ (126,126)。

因此,必须将“区码”和“位码”分别加上20H(注意,一定是分别加上,因为区码和位码分别代表一个字节,H为十六进制数的后缀:Hexadecimal,20H代表十进制中的32),作为国标码。也就是说,国标码相当于将区位码向后偏移了32,以避免与ASCII字符中0~32的不可显示字符和空格字符相冲突。例如“中”字的区位码为5448,转为国标码的过程为,区码:(54+32)=86,位码:(48+32)=80,所以“中”字的国标码表示为:(86, 80)。十六进制为(56H, 50H)。

四、机内码(内码)

国标码还不能直接在计算机上使用,因为这样还是会和ASCII中的除控制字符外的其他字符冲突(冲突的结果就是导致乱码)。

拿“中”字举个例子,它的国标码中的高位字节为86,这会与ASCII中大写字母'V'冲突,低位字节为80,与'P'冲突。因此为避免这种情况,规定国标码中的每个字节的最高位都从0换成1,即相当于每个字节都再加上128(十六进制为80,即80H;二进制为1000 0000),从而得到国标码的“机内码”表示,简称“内码”。由于ASCII码只用了一个字节中的低7位,利用这个特性,这个首位(最高位)上的“1”就可以作为识别汉字编码的标志,计算机在处理到首位是“1”的编码时就把它理解为汉字,在处理到首位是“0”的编码时就把它理解为ASCII字符。

“中”字从国标码转换为机内码的过程为,高位字节:(86+128)=214,低位字节:(80+128)=208,所以“中”字的内码十进制表示为:(214,208),十六进制表示为:(D6, D0)。

此时已经不再与ASCII冲突,完全兼容ASCII。因此,内码才是字符用GB2312编码后的在计算机中存储的形式。

五、输出码(字形码)

1、输出码,又称为字型码、字模码、字形码,属于点阵代码的一种。

为了将汉字在显示器或打印机上输出,把汉字按图形符号设计成点阵图,就得到了相应的点阵代码(字形码)。也就是用0、1表示汉字的字形,将汉字放入n行*n列的正方形(点阵)内,该正方形共有n^2个小方格,每个小方格用一位二进制表示,凡是笔划经过的方格值为1,未经过的值为0。

2、显示一个汉字一般采用16×16点阵或24×24点阵或48×48点阵。已知汉字点阵的大小,可以计算出存储一个汉字所需占用的字节空间。

比如,用16×16点阵表示一个汉字,就是将每个汉字用16行,每行16个点表示,一个点需要1位二进制代码,16个点需用16位二进制代码(即2个字节),共16行,所以需要16行×2字节/行=32字节,即16×16点阵表示一个汉字,字形码需用32字节。

因此,字节数=点阵行数×(点阵列数/8)。

3、为了将汉字的字形显示输出或打印输出,汉字信息处理系统还需要配有汉字字形库,也称字模库,简称字库,它集中了汉字的字形信息。

字库按输出方式可分为显示字库和打印字库。用于显示输出的字库叫显示字库,工作时需调入内存。用于打印输出的字库叫打印字库,工作时无需调入内存。

字库按存储方式也可分为软字库和硬字库。软字库以文件的形式存放在硬盘上,现多用这种方式。硬字库则将字库固化在一个单独的存储芯片中,再和其它必要的器件组成接口卡,插接在计算机上,通常称为汉卡,这种方式现已淘汰。

六、小结

可以这样理解,为了在计算机内表示汉字而采取统一的编码方式所形成的汉字编码叫内码。为方便汉字输入而形成的汉字编码为外码,也叫输入码。为显示输出和打印输出汉字而形成的汉字编码为字形码,也称为字模码、输出码。

计算机通过键盘输入的外码(重码时还需附加选择编号)对应于汉字内码,将汉字外码转换(即映射)为汉字内码,以实现输入汉字的目的;通过汉字内码在字模库(即字库)中找出汉字的字形码,将汉字内码转换(即映射)为汉字字形码,以实现显示输出和打印输出汉字的目的。

事实上,英文字符的输入、处理和显示过程大致上也差不多,只不过英文字符不需要输入码(即外码),直接在键盘上输入对应的英文字母即可。

七、实际操作验证

1、首先下载软件“GBCCovert.exe”,打开软件输入“国”字,然后按“转换”,就会得到区位码十进制数2590(切记选择十进制的数),我们就通过计算,看看是否真实所得的机内码十六进制数B9FA,并在word文档中加以验证,如下图所示。

2、区位码+2020H=国标码

由上得到区位码的十进制数为2590,GB类汉字编码为双字节编码,因此,,25相当于高位字节,90相当于低位字节。分别转换为十六进制为:

25→19H,90→5AH

19 5A+20 20=397AH

3、国标码+8080H=机内码

39 7A+80 80=B9FAH

所得结果,与汉字内码查看器里面的结果一致,不过先别高兴,到word文档里面再验证以下。

4、打开word,选择“插入→符号→其他符号”,在字符代码中输入“B9FA”,具体如下图所示。

综上,从区位码计算机内码的实际操作验证完成。快快试试吧!!!

管理员设置回复可下载

mysql外码内码定义_Windows | 简体中文编码——输入码(外码)、区位码、国标码(交换码)、机内码(内码)、输出码(字形码)区别及联系...相关推荐

  1. mysql外码内码定义_刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系...

    简体汉字编码中区位码.国标码.内码.外码.字形码的区别及关系 GB2312.GBK.GB18030等GB类汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?内码.外码.字形码又是什么意思 ...

  2. 刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系

    简体汉字编码中区位码.国标码.内码.外码.字形码的区别及关系 GB2312.GBK.GB18030等GB类汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?内码.外码.字形码又是什么意思 ...

  3. java 外码 内码_什么是汉字的内码、外码、交换码、字形码?

    展开全部 1.内码是指计算机汉字系统中使用的二进制字符编码,是沟通输入.输62616964757a686964616fe78988e69d8331333433616234出与系统平台之间的交换码,通过 ...

  4. 直链站php源码,源码库分享PHP版百度网盘直链/外链源码

    时间:2013-10-22来源:Aspku 作者:源码库 文章热度: ℃ PHP版百度网盘直链/外链源码分享,使用方法: 一.复制下面的php代码,另存为文件baidupan.php,然后将php文件 ...

  5. PDF417码制尺寸定义

    PDF417码制尺寸定义          1.模块宽度(X)不得小于0.191mm,你们目前所用300dpi打印机点的尺寸是0.084 mm * 0.01 mm,可   三倍以上值         ...

  6. pcm输出还是源码输出_观看高清必备 如何简单实现源码输出

    目前不少蓝光当中都采用了多声道音轨,其中不乏DTS-MA或Dolby TrueHD格式的音频,如果使用多声道音箱外加源码输出的话能获得不俗的视听效果 观看高清必备 如何简单实现源码输出 [PChome ...

  7. 字形码是计算机内部编码吗,汉字编码字形码

    1.2.1计算机中数据的表示 4.汉字编码 汉字处理包括汉字的编码输人.汉字的存储和汉字的输出等环.节.也就是说计算机处理汉字,首先必须先将汉字代码化,即对汉字进行编码.无论西方的拼音文字还是汉字这种 ...

  8. 四种连接类型:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接)

    在from子句中表示连接操作有四种:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接). 一.理论讲解 1.内连接jo ...

  9. mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...

    [单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...

  10. Oralce EBS R12 xml输出二维码

    Oralce EBS R12 xml输出二维码 文章目录 Oralce EBS R12 xml输出二维码 一.引入QRCode.jar 二.JSP程序代码 三.程序部署 四.修改RTF模板 五.总结 ...

最新文章

  1. Linux vsftp配置详解
  2. 不想参加无聊的团队分享, 我们这样玩
  3. 日常生活小技巧 --惠普战66三代 重装系统
  4. [转]写好shell脚本的13个技巧
  5. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
  6. 演练 动态数组存储学生对象 并且实现遍历 0119
  7. 十分钟搞定 pandas
  8. 萧功秦:为什么我们缺少特立独行的人生态度
  9. Java项目的开发流程
  10. 科创板将迎做市商机制,做市商到底是什么?
  11. 用“狗屁不通文章生成器”写作文,竟打败73.5%的学生?
  12. 拼小圈营销群_拼多多拼小圈引流卖货全攻略
  13. c14cpm和dpm怎么换算_DPM7001液体闪烁计数器
  14. 每个系统管理员都要知道的 30 个 Linux 系统监控工具
  15. 2023 IEEE Fellow出炉:唐立新、宗成庆、朱军、姬水旺等入选
  16. 应广单片机系列MCU
  17. AI美颜SDK功能算法代码解析
  18. 《我的职场十年》-读后感-Pete的启示
  19. C# SQLite 数据库基本操作
  20. install logicalDoc

热门文章

  1. 建立桌面文件管理格子_win10桌面分区,win10如何创建桌面格子
  2. Aspen hysys换热器修改计算模式Find Fouling模式
  3. 如何在 Windows 下像 Mac 一样优雅开发
  4. 软件是计算机程序的总和 主要分为,2014年造价师考试安装工程专业讲义:计算机控制...
  5. win10蓝牙开关不见了_来自德国,比JBL更硬汉,这款户外蓝牙音箱,上得厅堂下得厨房...
  6. SQL 2005/2008质疑修复
  7. 政务信息系统整合共享实施方案
  8. 大型集团法务工作中的电子签章应用场景
  9. 极客时间_算法训练营(代码实现汇总)
  10. 每天几道面试题SSM面试题