声明自己文件的编码?

时间:2013-09-14 12:35:16

标签: html character-encoding

我读到HTML文件必须包含<meta charset="utf-8">元素中的head元素才能符合标准。

为什么在文件本身中指定文件的编码是有意义的?为了阅读meta - 元素,必须知道编码;所以再次指定编码似乎是多余/无用的。

3 个答案:

答案 0 :(得分:3)

在读取此元素之前,将使用用户代理的默认编码来解释文档。 (这通常是ISO-8859-1。)如果编码与默认编码不同,则根据元素重新解释文档。这就是为什么你应该尽可能早地将它放在体内,或者最好使用HTTP标头(见下文)。

<meta>元素的希望是前面的字符都是ASCII字符集,几乎所有字符集都能正确解释。

但是,通常情况下,如果可能,则应在HTTP响应标头中发送此信息:

Content-Type: text/html; charset=utf-8

这可确保从一开始就正确解释文档。

答案 1 :(得分:1)

确实,文档在其自身内声明其编码是矛盾的。它实际上只是次要的后备。如果设置,HTTP Content-Type标头总是先行;并且始终设置。

如果在非HTTP上下文中处理文档,则在HTML元元素中声明charset是有意义的;意味着它是否曾经没有通过HTTP提供服务,因此无法在HTTP标头中声明其编码。如果下载并保存文档以供以后离线使用,则可能是这种情况。在这种情况下,大多数编码都与ASCII兼容,浏览器通常会尝试以ASCII兼容的默认编码(如Latin-1或UTF-8(取决于浏览器的设置))读取文档,直到遇到元标记。如果您的文档以非ASCII兼容编码保存,例如Shift-JIS或GB18030,这可能会也可能不会起作用,具体取决于默认设置以及浏览器如何明智地确定它正在处理的编码;它主要取决于浏览器如何处理这种情况。

答案 2 :(得分:0)

这样,您就可以设置有关页面编码的元数据信息。如果您没有此设置,页面将加载浏览器中页面的默认编码集。如果您的页面中有一些非ASCII字符(例如,如果未将UTF-8编码设置为页面编码,则显示带问号),这会非常不方便。