charset and encoding理解
在学习TeX的基础东西,但是今天看font的时候关于encoding到底是神马彻底的无语。于是有了仔细学习下的想法。现在有所得,在此总结和记录下。
主要参考文章:
http://blog.csdn.net/zhh157/archive/2008/11/08/3249260.aspx
个人总结:
关于TextEdit程序读取文本文件的时候涉及有关charset和encoding的步骤猜想:
1 在电脑中以二进制形式存储的文本文件;
2 TextEdit读取此文件,将1010数据通过相应的上下文(这里是以utf-8encoding为例)理解。
3 更具一个简单的算法,提取出对应于uincode charset的字符序号(为了区分编码,用序号代替,例如0x7E就表示的是字符‘z’。)
4 根据该序号,在font文件中找到该字形图像(根据参考文章所说,font文件中也包含一个unicode编码索引),然后显示出来。
为了验证前面3个步骤,做了点小实验,以Unicode(UTF-8)为例:
1 输入字符 ‘我’,存储为utf-8编码格式,文件名为:u8.txt
2 用HexFriend工具打开该文件,显示如图:
该16进制数转为二进制为:1110 0110 _ 1000 1000 _ 1001 0001。根据参考文章中所描述的规则,可以确定其所表示的相应的unicode字符编码(字符集中的字符序号)为:0110 0010 0001 0001(6411)。
3 现在我们做相反的事情:我们查到符号对应的unicode编码为:U+25CE。其中25CE转换为二进制为:0010 0101 1100 1110。为了能够使这个符号在TextEdit中显示出来,我们在此必须转成ut8编码机制能识别的二进制,得到:1110 0010 1001 0111 1000 1110(E2978E)。
4 我们将E2978E输入到HexFriend中并保存。
5 刷新TextEdit,可以得到如下结果:
6 ok, 完工。其实可以举一反三, ascii编码,GBk编码(想对应的GBK字符集)啥的,都可以 实验的。 UTF-16编码的话文件会以0xFFFE开始哦~~。
PS: 欢迎反馈错误~
Jan 14, 2024 06:56:33 PM
Nice to be visiting your blog once more, it has been months for me. Well this article that ive been waited for therefore long. i want this article to finish my assignment within the faculty, and it has same topic together with your article. Thanks, nice share