2022 年我还应该使用 <meta charset="UTF-8"> 吗?

问题描述 投票:0回答:2

<meta charset="UTF-8">

UTF-8 是现代浏览器中的默认编码器。因此,这段代码所做的只是添加了对不会自动执行此操作的浏览器的支持。我不打算支持旧版浏览器还有其他原因添加这行代码吗?

我听其他人说,忽略它可能会导致一些跨脚本攻击坏事等等,但从未给我任何明确的例子。

还有一些旧的 HTMl 验证器在离开

<meta charset="UTF-8">.
时会抛出错误

https://validator.w3.org/nu/#file

The character encoding was not declared

然后它会这样做

process with windows-1252. 

这不是很好,因为如果网站包含

windows-1252
不支持的字符,可能会导致错误。

我猜这只发生在默认不支持 UTF-8 的浏览器上。如果我忽略这个,我是否应该担心这个警告/错误?

我进行了研究,试图理解为什么使用 UTF-8,但我找不到为什么使用或不使用它的明确答案。

提前致谢。

html
2个回答
1
投票

对于任何回顾这篇文章的人,我做了更多研究,并找到了更多关于为什么要包含这行代码的原因。我从 Google Devs 找到了这个页面。这说明了

https://web.dev/charset/#resources

Lighthouse 标记未指定字符编码的页面:

因此,不包括

<meta charset="UTF-8">
会使您的 Google Lighthouse 得分较低。

这就是为什么它被认为是最佳实践

服务器和浏览器通过互联网发送数据字节来相互通信。如果服务器在发送 HTML 文件时没有指定使用哪种字符编码格式,浏览器将不知道每个字节代表什么字符。字符编码声明规范解决了这个问题。

这是lighthouse 文档

根据我的理解,这行代码不再是“必要的”,但被认为是最佳实践。希望这对阅读本文的人有所帮助。


0
投票
<meta charset>

的问题是它会被

Content-Type
标头覆盖。这可能会导致混乱和彻头彻尾的谎言(
例如
,以 UTF-8 保存的 HTML 但包含 <meta charset="utf-16">)。除非您可以保证服务器不会弄乱您的字符集,否则将其保留会更安全。
而且因为你必须始终知道你的服务器在做什么才能安全使用,所以你不妨在服务器级别配置它。

此外,值得注意的是,使用除 UTF-8 之外的任何内容都是一个糟糕的主意。如果您打算使用其他东西,您应该提供大量文档来说明为什么您认为这是一个好主意(但 99.999% 的情况并非如此)。

正因为如此,几乎没有任何理由将 HTML 保存为 UTF-8 以外的任何格式。正因为如此,没有理由不拥有任何东西。正因为如此,除非您的服务器由于某种原因无法处理交付

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

,否则永远没有理由有一个。

此外,解决另一个答案中提到的 Lighthouse:链接文档特别指出解决该问题的方法之一是在 

Content-Type

标头中发送字符集。因此,根据 Lighthouse 排名,没有理由支持

<meta charset>
    

© www.soinside.com 2019 - 2024. All rights reserved.