1

我为 Windows 安装了 xampp 1.8.1,http://localhost/xampp然后打开了 xampp 的索引页面。

内容类型的页面响应标头未指定字符集:

Content-Type:text/html

该页面的 html 也没有指定字符集。

在这种情况下,浏览器如何处理页面?

4

2 回答 2

3

如果页面以 UTF-8 或 UTF-16 字节顺序标记开头,则从那里获取编码。<meta>这发生在查看 HTTP 标头和元素之前并且优先于查看。

如果也没有 BOM,则使用的编码取决于实现,并且很可能取决于用户碰巧在世界的哪个位置。

尽管如此,该阶段的所有变体实际上都与 ASCII 一致,因此如果页面内容仅包含 ASCII 字符,则不指定编码可能不会造成任何损害。

有关详细信息,请参阅http://www.w3.org/html/wg/drafts/html/master/syntax.html#determining-the-character-encoding

于 2013-09-13T20:26:19.553 回答
1

如果没有找到字符集,那么它将从页面中读取一些 HTML 代码,然后尝试猜测编码。如果它无法弄清楚,那么它将默认为浏览器的默认字符集。根据浏览器的不同,它通常类似于 Windows-1252(Latin-1 的超集,也称为 ISO 8859-1)或 UTF-8。

自己设置字符集很重要。存在漏洞(至少在旧版本的 IE 中),您可以在其中向浏览器提供恶意代码,如果浏览器猜错或使用其默认字符集,这些恶意代码将运行。

应该始终将其设置在 HTTP 标头中,并且将其设置在 HTML 中永远不会受到伤害。

将其设置为标头通常由服务器完成。在 Apache 中,它通常在 httpd.conf 文件中完成,但也可以在 .htaccess 文件中完成:

AddCharset UTF-8 .php .html .css .js

...但它也可以在 PHP 中完成:

header('Content-Type:text/html;charset=utf-8');

在 HTML 中,您可以这样设置:

<meta charset="utf-8">

这是 HTML5 的处理方式,但较旧的浏览器可以很好地理解它。

于 2013-09-13T20:23:37.887 回答