什么是BOM

什么是BOM

 

BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little- endian)。

 

BOMs 文件头:

   00 00 FE FF    = UTF-32, big-endian

   FF FE 00 00    = UTF-32, little-endian

   EF BB BF       = UTF-8,

   FE FF          = UTF-16, big-endian

   FF FE          = UTF-16, little-endian

 



BOM的来

识别 Unicode 文件,Microsoft 所有的 Unicode 文件应该 ZERO WIDTH NOBREAK SPACEU+FEFF)字符开头一个特征符节顺标记byte-order markBOM识别文件中使用的编码和字节顺

不同的系统对BOM的支持

因为一些系统或程序不支持BOM,因此带有BOMUnicode文件有时会带来一些问题。
1.        JDK1.5以及之前的Reader都不能处理带有BOMUTF-8编码的文件,解析这种格式的xml文件时,会抛出异常:Content is not allowed in prolog.
2.        Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。
不同的编辑工具对BOM的处理也各不相同。使用Windows自带的记事本将文件保存为UTF-8编码的时候,记事本会自动在文件开头插入BOM(虽然BOMUTF-8来说并不是必须的),但是editplus就不会这样做。


原文地址:https://www.cnblogs.com/signheart/p/7b6a14a5fc7ba926fe3e74aca3642a33.html