2024-05-09 07:03:35 | 来源: 互联网整理
但如果直接采用国标码作为计算机直接处理的内码,仍然会与ASCII编码冲突,产生乱码。
因为国标码虽然相对于区位码避开了ASCII码中0到32的前33个不可打印字符,但并没有避开ASCII码中的英文字母、数字和符号等可打印字符(33~ 126,总共 94 个字符)和不可打印的 DEL(127)。 也就是说,国标码并不完全兼容ASCII码。
5.
为了完全避免与ASCII码冲突,考虑到ASCII码只使用一个字节的低7位,其最高位(即第一位)始终为0,所以决定改变每个字节的最高位国标码中的字节设置为1(国标码的两个字节中的最高位始终为0,即国标码中的每个字节和ASCII码一样,实际上只使用了低7位一个字节),这就是机器内码(即内码),简称内码。
这样,ASCII码和编码就完全区分开来了。 这就是为什么必须加上国标代码(80H、80H)才能得到机内代码。
6.
看到这里,有人可能又要问了:如果只是为了避免与ASCII码冲突,那为什么不直接把区号和区号的最高位从0改成1(相当于直接各128相加),岂不是?这是否消除了不必要的国家标准代码中间转换的需要? 并且不需要向后移位32,所以没有必要浪费这部分编码空间。
我对此也很困惑。 在网上查了很久还是没有找到答案,所以不知道具体原因。 或许是一开始考虑不够? 也许是为将来的扩展预留了一些空间? 或者也许还有其他令人信服的理由? 如果有人知道的话,希望能给我一些建议。
区位码、国标码、内码对照表(包括汉字内码B0A1~F7FE,共6763个)
5、外文代码(输入法代码、输入法代码)
1.
外码也称为输入码、输入法码。 它是一组用于将汉字输入计算机的键盘符号,用作输入汉字的代码。
只有26个英文字母,所有字符都可以放在键盘上。 但用这种方法不可能把所有汉字都打到键盘上。 因此,汉字系统需要自己的输入码系统来建立汉字与键盘的对应关系。
2.
目前常用的汉字外码分为以下几类:
1)数字编码,如位置代码;
2)拼音编码,如全拼、双拼、自然码等;
3)字形编码,如五笔、形码、郑码等。
3.
汉字外码常有重码。
所谓重码,是指同一个汉字外码对应多个汉字。 另一方面,即可能有多个汉字具有相同的外码,相当于重复,故称为“重码”。 例如,使用拼音作为外码时(即使用拼音输入法输入汉字时),重码现象就相当普遍。
当出现重码时,往往需要附加一个选择号来具体确定要输入的汉字。 这种情况下,可以认为外来代码实际上相当于隐含地包含了选择号。
6.字体代码(字体代码、字体代码、输出代码)
1.
字形码,又称字形码、字体码、输出码,是点阵码的一种。
为了在显示器或打印机上输出汉字,需要将汉字根据图形符号设计成点阵,并得到相应的点阵码(字形码)。
也就是说用0和1来表示汉字的字形,将汉字放入一个n行n列的正方形(即点阵)中。 该方格一共有n^2个小方格,每个小方格使用一个二进制数。 表示笔划经过的任意方格的值为1,笔划未经过的任意方格的值为0。
2.
显示汉字一般采用16×16点阵或24×24点阵或48×48点阵。 知道了汉字点阵的大小,就可以计算出存储一个汉字所需的字节空间。
例如,用16×16点阵表示一个汉字,意味着每个汉字用16行,每行16个点。 1 个点需要 1 个二进制数字,16 个点需要 16 个数字(即 2 个字符)。 节),所以需要16行×2字节/行=32字节,即一个汉字用16×16点阵表示,字形码需要32字节。
因此,字节数=点阵行数×(点阵数/8)。
3.
显然,与抽象字符表ACR中的“抽象”字符相比,字形代码所表示的字符可以称为“具体”字符,因为它们已经具有“具体”的外观。
4.
为了显示或打印汉字的字形,汉字信息处理系统还需要配备汉字字形库,也称为字形模型库,简称字库,集中存储字形信息的汉字。
字体库按输出方式可分为显示字体库和打印字体库。 用于显示输出的字体称为显示字体,工作时需要将其调入内存。 用于打印输出的字体称为打印字体,工作时不需要加载到内存中。
字库根据存储方式还可分为软字库和硬字库。 软字体库以字体文件(即字形文件)的形式存储在硬盘上,现在也经常使用这种方法。 硬字体将字体固化在单独的存储芯片中,然后与其他必要的设备形成接口卡,插入计算机中,通常称为中文卡。 这种方法现在已经过时了。
七、总结
1.
可以理解为,在计算机中采用统一的编码方式表示汉字所形成的汉字编码称为内码。 为了方便汉字输入而形成的汉字编码,就是外码,也叫输入码。 为显示和打印汉字而形成的汉字编码是字形码,又称字形码、输出码。
通过键盘输入汉字外码,然后输入法将汉字外码转换为当前操作系统默认使用的字符编码方案的字符号(即码点值),然后将其转换为汉字根据字符编号通过代码页查找表。 内码(代码页详情见前面介绍)达到输入汉字的目的; 然后根据选择的字体,利用汉字内码在字体模型库(即字形库)中查找该字体对应的字形编码,从而将汉字内码转换为汉字字形编码达到显示、打印汉字的目的。
其实,英文字符的输入、处理和显示的过程大致相同,只不过英文字符不需要输入码(即外文码),直接在键盘上输入对应的英文字母即可。
2.
注意,ASCII 码以及 ISO 8859 系列、GB 系列、Big5 和 Shift JIS 都与 ASCII 码兼容,但相互不兼容(“ANSI 码”是与世界上各个国家和地区制定的相互兼容的)世界)。 ASCII码是各种相互不兼容的字符编码的总称。 下一篇文章会详细介绍这个通用术语的来龙去脉)。 它们都属于传统的字符编码模型,而不是现代的字符编码模型。 现代字符编码模型很难直接简单地应用。 使用字符编码模型中的概念来表达。
如果一定要套用的话,就GB系列编码而言,勉强来说,区位码相当于现代字符编码模型中编号字符集CCS的字符号,国标码相当于字符编码方式CEF的码元序列,而机器码则相当于字符编码方式CES的字节序列。
不过,GB系列编码虽然是多字节编码,但是代码单元却是单字节代码单元(后面会详细介绍代码单元的概念),所以不存在字节序问题,也不存在字符编码模式。 CES中big-和-的概念(字节序和big-、-的概念后面会详细介绍)。
热门手游排行榜