Byte Order Mark
字节顺序标记(BOM)是置于 Unicode 文本开头的 U+FEFF 字符,用于指示编码形式与字节序。
用途
使解码器无需外部元数据即可自动检测文本编码与字节序。
机制
不同编码产生不同 BOM 字节序列:UTF-8 = EF BB BF,UTF-16LE = FF FE,UTF-16BE = FE FF,UTF-32LE = FF FE 00 00,UTF-32BE = 00 00 FE FF。解码器读取前 2-4 字节匹配。
用例
- 文本编辑器编码检测
- 跨系统文本文件交换
- 数据库导入编码识别
- CSV 文件 Excel 编码处理
示例
- 输入
UTF-16LE file输出FF FE ...Leading bytes FF FE indicate little-endian UTF-16
常见错误
- Mistaking a UTF-8 BOM for data content
- Detect and strip the BOM when reading
相关词条
BOM
BOM(字节顺序标记)是 Unicode 字符 U+FEFF,置于文本流开头用于指示编码形式与字节序。 词汇表
Endianness
字节序是多字节数值在内存中存储的字节排列顺序:大端(big-endian)高位在前,小端(little-endian)低位在前。 词汇表
UTF-16
UTF-16 是 Unicode 的变长编码形式,使用 2 或 4 字节表示一个码点,BMP 字符用 1 个 16 位码单元,补充平面字符用代理对(2 个码单元)。 词汇表
UTF-8
UTF-8 是 Unicode 的变长编码形式,使用 1 至 4 字节表示一个码点,与 ASCII 完全向后兼容,是 Web 与现代系统的事实标准。 词汇表