Good Good Study, Day Day Up!

Happy Life, Happy Money!

charset and encoding理解

IWRose posted @ 2011年4月02日 19:33 in 未分类 , 2195 阅读

在学习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
NewImage 2 用HexFriend工具打开该文件,显示如图:
NewImage
该16进制数转为二进制为:1110 0110 _ 1000 1000 _ 1001 0001。根据参考文章中所描述的规则,可以确定其所表示的相应的unicode字符编码(字符集中的字符序号)为:0110 0010 0001 0001(6411)。

3 现在我们做相反的事情:我们查到符号NewImage对应的unicode编码为:U+25CE。其中25CE转换为二进制为:0010 0101 1100 1110。为了能够使这个符号在TextEdit中显示出来,我们在此必须转成ut8编码机制能识别的二进制,得到:1110 0010 1001 0111 1000 1110(E2978E)。

4 我们将E2978E输入到HexFriend中并保存。
NewImage

5 刷新TextEdit,可以得到如下结果:
NewImage

 

6 ok, 完工。其实可以举一反三, ascii编码,GBk编码(想对应的GBK字符集)啥的,都可以 实验的。 UTF-16编码的话文件会以0xFFFE开始哦~~。

 

 

 

PS: 欢迎反馈错误~

 

  • 无匹配
  • 无匹配
seo service london 说:
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


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter