一些基本概念的理解
编码就是将各种文字,字符通过一个或者多个字节的数值来来代表这些字符。如:在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.如果我们编辑代码时使用的编码与我们使用的字库编码不一致,或者不相互兼容。那么我们代码中就会从字库中读到我们不想要的字符模型。从而出现乱码。