参考来源: http://blog.youkuaiyun.com/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。
不明白何解。
本文探讨了BOM(Byte Order Mark)在UTF-8编码中的作用及其在不同平台上的表现差异,特别是在Windows环境中如何通过BOM来识别UTF-8编码的文件。此外,还提到了在使用gedit编辑器过程中遇到的一个关于BOM导致文件编码发生变化的问题。
1527

被折叠的 条评论
为什么被折叠?



