「带bom的utf-8」和「无bom的utf-8」有什么区别?网
发布网友
发布时间:2024-10-23 11:14
我来回答
共1个回答
热心网友
时间:2024-11-03 00:02
UTF-8标准格式无需BOM标记。尽管Unicode标准允许在UTF-8中使用BOM,不含BOM的UTF-8才是标准形式。
微软习惯性地在UTF-8文件中使用BOM以区分其与ASCII等编码,将带BOM的小端序UTF-16称为Unicode,此做法并不详细说明。
BOM(字节顺序标记)专门用于UTF-16和UTF-32,标记字节序。微软在UTF-8中使用BOM是为了清晰区分UTF-8与ASCII等编码,但在Windows之外的系统中,此举可能会导致问题。
“UTF-8”与“带BOM的UTF-8”主要区别在于是否有BOM。即文件开头是否包含U+FEFF字符。
UTF-8网页代码不应使用BOM,否则容易引发错误。例如,以下代码本应为正确的HTML,但在某些浏览器中会被错误解析。
此外,《The Unicode Standard, Version 6.0》中提到,虽然UTF-8使用时不需字节顺序标记,但在将UTF-16或UTF-32数据(包含字节顺序标记)转换为UTF-8时,字节顺序标记会转换成特定字节序列。Unicode标准未要求或推荐在UTF-8数据流开头使用字节顺序标记,但其存在不影响UTF-8编码方案的合规性。然而,数据流开头的字节序列识别可以作为数据流使用UTF-8编码方案的近似确证。
参考链接:unicode.org/versions/Un...