Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html <;元字符集=";utf-8“&燃气轮机;声明自己文件的编码?_Html_Character Encoding - Fatal编程技术网

Html <;元字符集=";utf-8“&燃气轮机;声明自己文件的编码?

Html <;元字符集=";utf-8“&燃气轮机;声明自己文件的编码?,html,character-encoding,Html,Character Encoding,我读到一个HTML文件必须在head-元素中包含元素才能符合标准 为什么在文件本身中指定文件的编码是有意义的?为了读取元-元素,必须已经知道编码;因此,再次指定编码似乎是多余的/无用的。在读取此元素之前,将使用用户代理的默认编码解释文档。(这通常是ISO-8859-1。)如果编码不同于默认编码,则根据元元素重新解释文档。这就是为什么您应该尽早将它放在正文中,或者最好使用HTTP头(见下文) 元素的希望在于前面的字符都在ASCII字符集中,几乎在所有字符集中都能正确解释 但是,通常情况下,如果可能

我读到一个HTML文件必须在
head
-元素中包含
元素才能符合标准


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

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

元素的希望在于前面的字符都在ASCII字符集中,几乎在所有字符集中都能正确解释

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

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

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

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

文档在其内部声明其编码确实是自相矛盾的。这实际上只是一个次要的退路。如果设置了HTTP
内容类型
标题,则该标题始终优先;它应该一直被设定


在HTML元元素中声明字符集对于在非HTTP上下文中处理文档是有意义的;这意味着如果它从未通过HTTP提供服务,因此不能在HTTP头中声明其编码。如果下载并保存文档以供以后脱机使用,则可能会出现这种情况。在这种情况下,大多数编码都是ASCII兼容的,浏览器通常会尝试以ASCII兼容的默认编码(如Latin-1或UTF-8)读取文档(取决于浏览器的设置),直到遇到meta标记为止。如果您的文档是以非ASCII兼容编码保存的,例如Shift JIS或GB18030,这可能会起作用,也可能不会起作用,这取决于默认设置以及浏览器处理何种编码的智能程度;如何处理这种情况主要取决于浏览器。

当然不必是UTF-8。这里为HTML5指定了如何从文件中提取编码信息(可以在不从f.e.HTTP头中读取任何附加信息的情况下读取):可能还有一个有趣的地方是规范中的这个位置,-f.e.它还声明,“包含字符编码声明的元素必须在文档的前1024字节内完全序列化。”HTML5文档不必包含
meta
-
charset
。默认编码意味着ASCII?您可以参考标准吗?默认编码是用户代理的编码,因此这取决于客户端。许多浏览器都使用ISO-8859-1作为默认编码。整个文档都根据编码进行解释已确定,因此说“然后根据元元素解释文档的其余部分”是不正确的。如果浏览器在此过程中更改了编码,它将从一开始就重新处理文档。谢谢,出于某种原因,我觉得文档不会被完全重新解释。我已更新了答案。为什么最好在HTTP标头中指定字符集?如果其中一个同时指定,将使用哪一个?