Bink.nu网站上的文章表示,微软的记事本程序中又发现一个有趣的BUG。事情经过是:
  1、打开一个记事本程序;
  2、输入:AAAA BBB CCC DDDDD(或者任何其它4-3-3-5形式的字母组合);
  3、保存文档,关闭记事本;
  4、再次打开刚才保存的文档,你会发现那些字母变成了9个矩形格子(显示效果:?????????)。
  5、此外,把记事本中的格子再次用刚才那些字母序列覆盖,保存并关闭记事本。再次打开时,显示的又是正确的字符序列了。
  老王的扩展:当进行完上述5步后,我想是不是这个BUG只在新建文档时有效呢。于是我在第5步后用“CTRL+N”新建了一个记事本文档,输入那些字母,保存为一个新文件,打开它时现实的确是正确的。而经测试,只有在没进行过上述1-3步操作的记事本文档中才有这个BUG存在。比如在一个已存在的文档中操作,或是到“开始-程序-附件”中启动记事本操作,或是查看网页源代码弹出的记事本中操作等。一个文档一旦应用过本BUG,即使在打开它的窗口中新建一个一般文档-保存-打开新建的文档,粘贴/输入上述字母也无法看到BUG了。
  所以这个BUG确实很有趣,至于原理是什么,估计得去问微软设计记事本的那位老兄了。关于本BUG存在于哪些系统中我没有条件测试,反正我的系统是Windows XP。
  更新:monyer兄弟的解释
  这是个文件编码识别问题,我们第一次建立文件保存时使用的是默认ANSI格式,通过打开记事本,输入以上字符另存为*.txt那个界面即可看见编码方式。
  但打开的时候是按Unicode编码打开的,我们再次输入以上字符另存为*.txt,在另存为界面可以看到编码方式已经更改了。
  这个是记事本的智能化编码识别问题,譬如ANSI、Unicode、Unicode Big Endian、Utf-8、Utf-8 bom、GB2312、Big5、ASCII等。我们从来没有意识到简单的文本居然有这么多编码是因为记事本程序的智能识别问题,但究竟程序员做这个智能识别用了什么算法不得而知了,不过可以肯定的是不是简单的fffe文件头识别是了。