字符编码与字库开发基本原理学习(一)

来源:互联网 发布:网络棋牌机器人规律 编辑:程序博客网 时间:2024/05/22 05:18

一些基本概念的理解

     编码就是将各种文字,字符通过一个或者多个字节的数值来来代表这些字符。如:在Unicode这种编码里,“中”对应的编码就是   "u4e2d"。不同的编码”中“字,对应的编码也不同。

     字库(或者称”字模“)就是描述字符形状的文件集合。字库有16位、24位、32位。每个字符对应于一个点阵。同时字库是按照一定编码制作成的如有的字库是符合GB2312的。

  通过字符的编码值,到这个字库文件中去寻找该字符对应的点阵数据,将这个数据拷贝到二维数值中。在将二维数组的值拷贝到显示屏上对应的内存中,即可显示该字符。


    举例:

       当Linux系统中的某个终端编码设为UTF8字符集、或者GB2312字符集(终端菜单栏有设置)。我们通过标准输入“中”时,我们的输入缓存中得到的数据是不一样的。

      不管使用那一种,我们用户看到的只是“中”字,这是由于字符集编码不同,“中”字对应的字符编码也不同。

       例如:我们在UTF8字符集下输入”中“字,然后由通过终端菜单栏设置为GB2312,这是后我们看到前面输入的”中“字,变了样,我们在输入"中"字则能正常显示。这是由于操作系统会根据当前选择的字符集(一些16进制编码),来解析这些字节数据,如果系统看到buffer中的数据为[0XD6][0XD0],它是”中“字,则按照此字节到字库中找到”中“字的字模显示到终端。



一些编码介绍

1.ASCII码:一个字节.

2.GB2312 区位码. 

3.GBK  分为三个编码区。(汉字区、图形编码区、用户自定义区)

4.Unicode使用4个字节来表示(用1字节表示 ASCII 、用2字节来表示拉丁文等、用3字节便是CJK字符(东亚文字)、用4字节为其它)

注意:以上编码值中,每个字节的值都有一定的范围(即不是每个字节值都是0~255)。


编程中的注意事项

1.如果我们编辑代码时使用的编码与我们使用的字库编码不一致,或者不相互兼容。那么我们代码中就会从字库中读到我们不想要的字符模型。从而出现乱码。


0 0
原创粉丝点击