当前位置:首页 > 培训职业 > 正文

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

理解汉字编码的复杂性,让我们从GB2312系列开始。首先,区位码是基于GB2312字符集的94x94二维表,每个字符由所在的区和位编码,例如“万”字的区位码为45 82,是编码中的一个关键概念。

国标码,或称交换码,为避免与ASCII字符的冲突,将区位码的区和位分别加上32,形成一个范围更宽的编码,确保汉字编码与ASCII字符区分开。例如,“万”字的国标码变为77 114或4D 72。

进一步,为了完全避免ASCII的干扰,内码或机内码诞生,每个字节的最高位改为1(相当于每个字节加128),如“万”的内码为205 F2。这样,通过区位码的区和位分别加160,可以直接得到内码。

转换背后的原因是GB2312的设计策略,既要保留ASCII的部分,又要确保汉字的独特编码。通过一系列的转换,确保了汉字与ASCII字符的独立性,为输入和输出提供了清晰的路径。

外码,即输入码,是用于输入设备的汉字编码形式,如区位码、拼音码等,存在重码问题。而字形码则是用于输出显示的点阵代码,如16x16点阵,存储了汉字的图形信息,通过字库实现输出。

总结来说,输入汉字的过程是通过外码转换为内码,然后内码对应字形码,形成最终的显示或打印字符。与ASCII等传统字符编码不同,GB系列编码如GB2312采用了多字节但单字节码元,避免了字符编码模式中的字节序问题。

多重随机标签

猜你喜欢文章