我为Windows安装了xampp 1.8.1,我打开了http://localhost/xampp
,打开了xampp的索引页。
内容类型页面的响应标头未指定Charset:
Content-Type:text/html
页面的html也没有指定Charset。
在这种情况下,浏览器如何处理页面?
答案 0 :(得分:3)
如果页面以UTF-8或UTF-16字节顺序标记开头,则从中获取编码。这种情况发生在以前,优先于查看HTTP标头和<meta>
元素。
如果没有BOM,则使用的编码取决于实现,可能取决于用户在世界的哪个位置。
该阶段的所有变体都与ASCII有效一致,因此如果页面内容仅包含ASCII字符,则不指定编码可能没有坏处。
有关详细信息,请参阅http://www.w3.org/html/wg/drafts/html/master/syntax.html#determining-the-character-encoding。
答案 1 :(得分: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的做法,但旧版浏览器对此非常了解。