是否在HTML文件中包含Unicode签名(BOM)?

时间:2015-05-20 12:21:11

标签: html utf-8 byte-order-mark

在Dreamweaver中,我有“包含Unicode签名(BOM)”选项。

如果我选中此框并将文件保存为HTML文件,则在Web浏览器中查看时看起来效果很好。如果没有,它会给我一些像åäö这样的瑞典字母的奇怪符号。

如果我使用标题回复“Content-Type:text / html; charset = utf-8”这个带有奇怪字母的HTML文件,它仍然会给我奇怪的符号。

Q1)这是否意味着它不是UTF-8编码文件(没有BOM显示奇怪符号的文件)?

Q2)文件UTF-8编码是什么,它只是Unicode签名(BOM)?

Q3)我应该或不应该在我的文件(HTML,Javascript,CSS,PHP)中添加包含Unicode签名(BOM)?

我知道我可以在HTML代码中添加<meta charset="UTF-8">或在我的.htaccess中输入AddDefaultCharset UTF-8。我只是认为最佳解决方案是让标题响应“它是一个UTF-8编码文件”,然后实际上也提供UTF-8编码文件。没别了。

Q4)我认为HTML文件是纯文本文件。这些文件中隐藏了哪些其他信息,如何阅读此信息?

1 个答案:

答案 0 :(得分:3)

对于UTF-8,BOM是完全可选的The Unicode consortium points 可以 创造问题而不提供任何真正的优势; the W3C says它可以替代其他形式的声明编码,而应该适用于所有现代浏览器。

BOM仅用于阐明编码的字节顺序。由于UTF-8只有一种字节序,因此它是多余的。它仅对UTF-16和其他编码有用。无论是否存在BOM,UTF-8编码的文件都是UTF-8编码。

HTML文件不会“隐藏”任何其他信息,它们是纯文本。

我的建议是:

  • 编码为UTF-8 ,无 BOM
  • 添加HTTP Content-Type标头以表示文件的编码
  • <meta>标记添加到HTML本身作为后备,如果文件在HTTP上下文之外被解释(意味着没有HTTP头存在,因为文件未被读取通过HTTP)

这使您可以最轻松地解决问题。如果您的字符仍然显得有趣,那么您的文件实际上不是UTF-8编码的,或者HTTP标头未正确设置。