时间:2014-07-21 09:00 来源: 我爱IT技术网 作者:山风
今天碰到一个奇怪的问题,我有一个程序会产生一个.txt档。内容为上千个0~255的数字由空白隔开。写档成功后在Windows XP底下用Notepad打开发现显示为乱码,但是用Notepad++以及Wordpad打开都可正常显示。很明显这是编码的问题,不过为什么会这样让我找了一阵子。最后发现是Notepad的问题。
Windows XP的Notepad有Unicode Detection的功能,Notepad使用一个Windows API叫IsTextUnicode()来侦测目前文字档是不是Unicode编码。但是这个API并没办法完美的辨认出Unicode,有时后会把ASCII text误认为是Unicode编码。比如说这段字串"aaaa aaa aaa aaaaa",如果你把他贴在Notepad上存起来再重新打开,你会发现他变成一团乱码。原因就在于IsTextUnicode()把全部都是此ASCII text误认为UTF-16。除了此case以外还有很多其他的case会造成误判。而Wordpad以及Notepad++不会有此误判的现象,因此可正常显示。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
