2.7.2. 为何需要BOM

即使对于字符进行了某种编码,可以正确读取/写入,可以正常显示字符了。

但是遇到将一个文件/字符流,从一个地方传输到另一个地方的话,就会遇到一些问题:

比如,本地是一个用UTF-16 LE编码的文件,传入到网络的另一端,接受者怎么知道你用的是UTF-16 LE的编码,而不是UTF-16 BE呢?

如果不知道,用了错误的UTF-16 BE去解码,且不是会导致乱码问题了。

所以,就需要一个说明和解释,目前的做法就是,在文件头(字符流的开始),添加一个BOM,Byte Order Mark,字节序的标记,用于表示此编码是LE还是BE。