参考来源: http://blog.csdn.net/thimin/archive/2007/08/03/1724393.aspx
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。
也就是说一个UTF-8文件可能有BOM,也可能没有BOM。
///
话说最近发现,用gedit打开一个带BOM的UTF8文本,全选复制到一个新建的文本中,保存退出。
有时会发生如下情况:
使用C程序读入新建的那个文本,发现开头多了四个字节:84 31 95 33,而且编码变成了ANSI。
不明白何解。