在 Dreamweaver 中,我有“包括 Unicode 签名 (BOM)”选项。
如果我选中此框并将文件保存为 HTML 文件,则在 Web 浏览器中查看时它看起来不错。如果不是,它会给我一些奇怪的瑞典字母符号,例如 åäö。
如果我使用 header 响应“Content-Type: text/html; charset=utf-8”提供带有奇怪字母的 HTML 文件,它仍然给我奇怪的符号。
Q1)这是否意味着它不是UTF-8编码的文件(没有BOM显示奇怪符号的文件)?
Q2) 是什么让文件采用 UTF-8 编码,它只是 Unicode 签名 (BOM)?
问题 3) 我是否应该在我的文件(HTML、Javascript、CSS、PHP)中添加包含 Unicode 签名 (BOM)?
我知道我可以添加 <meta charset="UTF-8">
在 HTML 代码中或键入 AddDefaultCharset UTF-8
在我的 .htaccess 中。我只是认为最佳解决方案是让 header 响应说“这是一个 UTF-8 编码文件”,然后实际上还提供一个 UTF-8 编码文件。没有别的。
Q4) 我认为 HTML 文件是纯文本文件。这些文件中还隐藏了哪些其他信息?我该如何阅读这些信息?
最佳答案
对于 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
header 表示文件的编码 - 还添加
<meta>
如果文件在 HTTP 上下文之外被解释(意味着不存在 HTTP header ,因为文件不是通过 HTTP 读取的)
这为您提供了最佳的兼容性和最少的潜在问题。如果您的角色仍然看起来很有趣,那么您的文件实际上不是 UTF-8 编码的,或者 HTTP header 设置不正确。
关于html - 是否在 HTML 文件中包含 Unicode 签名 (BOM)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349506/