programming
764 days ago
M$的记事本
调试一个小程序发现的.
用M$的记事本新建一个文件,输入些东西,然后另存为utf8格式的文件,你就会发现它会自动在文本前面添加EF BB BF这3个字节,这应该是用来标识文件格式的.
在Ultraedit里看到的似乎有些问题 是FF FE.
往标准的txt文件里随意添加标识,这种流氓行为很容易导致兼容性问题,更科学的方法应该是根据文件的内容来判断文件的格式.
调试一个小程序发现的.
用M$的记事本新建一个文件,输入些东西,然后另存为utf8格式的文件,你就会发现它会自动在文本前面添加EF BB BF这3个字节,这应该是用来标识文件格式的.
在Ultraedit里看到的似乎有些问题 是FF FE.
往标准的txt文件里随意添加标识,这种流氓行为很容易导致兼容性问题,更科学的方法应该是根据文件的内容来判断文件的格式.
unicode 文档前面附加两三个字节的识别码(学名叫BOM)不是M$ Notepad的错。这是unicode的规定。见http://www.unicode.org/faq/utf_bom.html。我试验了一下,. NET、Java、gvim和最新版本的UltraEdit和都认识BOM,会以相应方式处理。但最新版本的Python却不完全认识,它的文件I/O和正则表达式有时会因BOM而出错。