移动比联通强的帖子的再次探讨

这个问题在很久以前就看过了。只是最近又有人把这火星帖拿出来玩。突然发现以前自己知道是什么原因,现在竟然忘记了。

如果你的电脑操作系统是win2000或winxp的话,
  
  那么:1、在桌面上点右键,选择新建 - 文本文档;
  
  2、打开“新建 文本文档”,录入“移动”两字后存盘退出;   
  
  3、重新打开“新建 文本文档”,看到什么了?   
  
  4、是不是刚刚录入的“移动”两字?   
  
  咱们换过来   
  
  1、在桌面上点右键,选择新建 - 文本文档;   
  
  2、打开“新建 文本文档”,录入“联通”两字后存盘退出;   
  
  3、重新打开“新建 文本文档”,看到什么了?    
  
  4、是不是刚刚录入的“联通”两字不见了,取而代之是个烧焦的手机电池的模样?

确实是这样,但如果我保存的时候编码改成UTF-8就没有这样的事情。

说明这就是编码引起的,可到底是如何引起的呢?

因为Windows自带的记事本默认是以Ansi编码保存文件的,而联通这两个字的16进制代码是FFFE6A006803,所以被认为是UTF-8编码。这是因为“联通”两个字的GB-2312编码看起来更像UTF-8编码导致的,这是一个巧合,不是所有文字都这样。

“联通”的编码为C1 AA CD A8,其中C1和CD就是Leading Byte。前127个编码为标准ASCII保留,例如“0”的编码是30H(30H表示十六进制的30)。软件在读取时,如果看到30H,知道它小于128就是标准ASCII,表示“0”,看到C1大于128就知道它后面有一个另外的编码,因此C1 AC一同构成一个整个的编码,在GB-2312字符集中表示“联”。

当文档中所有字符都在C0≤AA≤DF 80≤BB≤BF这个范围的时候,notepad都无法确认文档的格式,没有自动按照UTF-8格式来显示。“联通”就是C1 AA CD A8,刚好在上面的范围内,所以不能正常显示。

而用UTF-8编码方式打开的联通两字,则只能是一个黑黑的大方块了。如果你能找到其它UTF-8编码以FFFE开头的中文字,则也可以达到“联通”这种效果。

也就是超过了他们原来的编码范围,才导致乱码。

附:gb2312编码表;http://www.knowsky.com/resource/gb2312tbl.htm

只有你写的汉字都在上述的范围内就会产生上述的现象。

posted @ 2006-09-22 17:40  芽芽陆  阅读(608)  评论(4编辑  收藏  举报