1.BOM(Byte Order Mark)
Unicode标准建议用BOM来区分字节序,即在传输字节流前,先传输被作为BOM的字符“零宽无中断空格”。这个字符的编码是FEFF,而反过来的FFFE(UTF-16)和FFFE0000(UTF-32)在Unicode中都是未定义的码位,不应该出现在实际传输中。
UTF编码 | BOM |
UTF-8 without BOM | 无 |
UTF-8 with BOM | EF BB BF |
UTF-16BE(大端) | FE FF |
UTF-16LE(小端) | FF FE |
UTF-32BE | 00 00 FE FF |
UTF-32LE | FF FE 00 00 |
UTF-8无需使用BOM表明自己顺序,但可用BOM表明文件是UTF-8的编码方式。根据BOM规则,在一段字节流开始时,如果接收到BOM字节,则分别表明该文本的编码方式,若不是BOM开头,那程序以系统默认编码(ANSI)读取。
本文参考了黑马程序员的视频课程~