UTF-8的BOM是什么有何作用。 BOM: Byte Order Mark UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。 一般采用UTF-8无BOM格式即可。 BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)。 在绝大多数编辑器中都看不到BOM字符,因为它们能理解Unicode,去掉了读取器看不到的题头信息。若要查看某个Unicode文件是否以BOM开头,可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。 BOM Encoding EF BB BF UTF-8 FE FF UTF-16 (big-endian) FF FE UTF-16 (little-endian) 00 00 FE FF UTF-32 (big-endian) FF FE 00 00 UTF-32 (little-endian) 为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE(U+FEFF)字符开头。这作为一个“特征符”或“字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序。 Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。 UTF-8的BOM(Byte Order Mark)是一个特殊的字符标记,它由三个字节组成:EF BB BF(十六进制表示)。 主要作用 文件编码标识:BOM可以明确标识文件是以UTF-8编码保存的,帮助软件正确识别编码方式。 兼容性:某些Windows程序(如记事本)使用BOM来区分UTF-8和其他编码。 注意事项 UTF-8实际上不需要BOM,因为它没有字节序问题(与UTF-16和UTF-32不同) 在某些情况下,BOM可能导致问题: 网页开发中可能导致HTTP头部被破坏 在Unix/Linux系统中的脚本文件中可能导致"#!"行无法被正确识别 某些老旧系统可能无法正确处理带BOM的文件 实践建议 如果文件只在Windows环境使用,可以保留BOM 如果文件需要跨平台使用或在网络环境中使用,通常建议不使用BOM 大多数现代文本编辑器允许您选择是否添加BOM标记当保存UTF-8文件时。 Excel 当使用Excel 打开无 BOM 文件的时候,可能会出现字符乱码。 https://www.isharkfly.com/t/utf-8-bom/17254