本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/03/21/%E4%BB%80%E4%B9%88%E6%98%AF%E5%AD%97%E8%8A%82%E5%BA%8F%E6%A0%87%E8%AE%B0/
摘要
本文主要讲述了:
- 什么是字节序标记
- UTF-8
- UTF-16
- UTF-32
正文
什么是字节序标记
字节序标记,英文为 byte order mark,缩写为 BOM。
字节序标记是 1 个 Unicode 字符,Unicode 码点为U+FEFF
。它作为 1 个幻数出现在纯文本流的开头,向纯文本读取程序标志字节序和编码格式等信息。
UTF-8
U+FEFF
的 UTF-8 编码为EF BB BF
。
Unicode 标准允许但不推荐在 UTF-8 里使用 BOM。
注:UTF-8 编码不区分大端小端
UTF-16
U+FEFF
的 UTF-16BE 编码为FE FF
,UTF-16LE 编码为FF FE
。
如果纯文本以 UTF-16BE 编码,那么 BOM 就是FE FF
。
如果纯文本以 UTF-16LE 编码,那么 BOM 就是FF FE
。
UTF-32
U+FEFF
的 UTF-32BE 编码为00 00 FE FF
,UTF-32LE 编码为FF FE 00 00
。
如果纯文本以 UTF-32BE 编码,那么 BOM 就是00 00 FE FF
。
如果纯文本以 UTF-32LE 编码,那么 BOM 就是FF FE 00 00
。