BOM, unicode 字符标识, 常被用来标识文件编码(UTF-8/16/32), 十进制编码为“65279”. 通常放在文件开头, 用来标记多字节编码文件的编码类型和字节顺序(big/little Endian).
对于UTF-8/16/32而言,它们名字中的8/16/32指的是编码单位是多少位的,也就是说,它们的编码单位分别是8/16/32位,
换算成字节就是1/2/4字节,如果是多字节,就要牵扯到字节序,UTF-8以单字节为编码单位,所以不存在字节序。
对于UTF-8来说,BOM标记的有无并不是必须的,是可选的,因为UTF8字节没有顺序,不需要标记.
也就是说一个UTF-8文件可能有BOM,也可能没有BOM.
windows上面的notepad等程序在打开文件的时候(unicode文件)会自动添加 EF BB BF 三个字节(BOM)
然而这个只是微软暗自作的标记, 其它平台上不一定会对UTF-8文本文件做个这样的标记。
微软的一些软件会做这种检测,但有些软件不做这种检测, 而把它当作正常字符处理。(乱码问题产生了)
引用
UTF-8 BOM [ EF BB BF ]
UTF-16 BOM [ FF FE ]
UTF-16 BE BOM [ FE FF ]
UTF-32 BOM [ FF FE 00 00 ]
UTF-32 BE BOM [ 00 00 FE FF ]
UTF-16 BOM [ FF FE ]
UTF-16 BE BOM [ FE FF ]
UTF-32 BOM [ FF FE 00 00 ]
UTF-32 BE BOM [ 00 00 FE FF ]