什么是BOM?
BOM(Byte Order Mark),即字节顺序标记。它是干什么用的呢?
一、BOM的作用
BOM就是一个放在文件开头的小标签,用来指明后面的数据的两个属性:
1.编码
在Unicode的世界里,有UTF-8、UTF-16、UTF-32等多种编码方式,BOM就像个向导,告诉你用的是哪种编码。
2.字节序
虽然UTF-8是字节序无关的,但对于UTF-16和UTF-32这种多字节编码,字节的顺序可是个大问题,这时候就需要BOM来指明字节序了。
二、BOM的本质
BOM本质上就是文件开头的一小段数据:
UTF编码 | BOM |
UTF-8 | EF BB BF |
UTF-16(大端) | FE FF |
UTF-16(小端) | FF FE |
UTF-32(大端) | 00 00 FE FF |
UTF-32(小端) | FF FE 00 00 |
表中的BOM编码在Unicode中都是未定义的码位,也就是说所有已定义的Unicode字符都不会占用这几个编码,所以它们可以专用来充当“标签”。
在实际使用中,UTF-8文件通常不包含BOM,因为UTF-8的编码不需要BOM。