What happens when we don't specify <meta charset="utf-8">
in the HEAD of the HTML document?
3 回答
无论是否存在这样的meta
标签,浏览器和用户代理都会首先查看 HTTP 标头以在那里找到编码信息。实际上,他们甚至会在此之前尊重用户设置并进行 BOM 嗅探,如第 8.2.2.1 节确定 HTML5 CR 中的字符编码中所述——在本期中,这是对现实的描述,而不仅仅是提议的规范。
所以答案真的是“这取决于”。在许多情况下,meta
标记会被忽略,因此忽略它没有任何效果,除非可能在 HTML 文档保存在本地的情况下(这样 HTTP 标头丢失)。在许多其他情况下,它不会被忽略,但如果它被忽略,浏览器无论如何都会推断出正确的编码。在某些情况下,标签恰好是使浏览器使用正确编码的唯一因素,省略它会导致对数据的错误解释,通常是在 windows-1252 编码中解释字节。这取决于实际内容。
当我们不指定时会发生什么
<meta charset="utf-8">
?在 HTML 文档的 HEAD 中?
用户代理查找从服务器发送的 Content-Type 响应 HTTP 标头:
Content-Type: text/html; charset=utf-8
如果 Content-Type 标头没有指定charset
取决于用户代理的不同的事情可能会发生。一些用户代理可能会尝试使用启发式算法通过分析响应流中的一些字节来寻找已知编码来猜测正确的字符集。如果这失败了,您最终可能会在您的网页中使用 ASCII 范围之外的字符的地方出现几个问号或奇怪的符号。