协慌网

登录 贡献 社区

<meta charset =“utf-8”> vs <meta http-equiv =“Content-Type”>

为了定义HTML5 Doctype 的字符集,我应该使用哪种符号?

  1. 短:

    <meta charset="utf-8" />
  2. 长:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

答案

在 HTML5 中,它们是等效的。使用较短的一个,它更容易记住和键入。 浏览器支持很好,因为它是为向后兼容性而设计的。

meta charset声明的两种形式都是等效的,并且应该在浏览器中使用相同的形式。但是,在将 Web 文件字符集声明为 UTF-8 时,需要记住一些事项:

  1. 以 UTF-8 编码保存文件而不使用字节顺序标记 (BOM)。
  2. 使用meta charset (如上所述)在 HTML 文件中声明编码。
  3. 您的 Web 服务器必须为您的文件提供服务,并在 Content-Type HTTP 标头中声明 UTF-8 编码。

默认情况下,Apache 服务器配置为以 ISO-8859-1 提供文件,因此您需要将以下行添加到.htaccess文件中:

AddDefaultCharset UTF-8

这将配置 Apache 以在 Content-Type 响应头中为您的文件提供声明 UTF-8 编码的文件,但您的文件必须以 UTF-8(无 BOM)保存。

记事本无法在没有 BOM 的情况下以 UTF-8 保存文件。一个免费的编辑器,可以是Notepad ++ 。在程序菜单栏上,选择 “编码> 在没有 BOM 的 UTF-8 中编码”。您还可以使用 “编码> 转换为无 BOM 的 UTF-8” 打开文件并以 UTF-8 重新保存它们。

有关维基百科字节顺序标记(BOM)的更多信息。

使用短标记的另一个原因是它与您可能在标记中指定字符集的其他实例相匹配。例如:

<script type="javascript" charset="UTF-8" src="/script.js"></script>

<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

一致性有助于减少错误并使代码更具可读性。

请注意,charset 属性不区分大小写。您可以使用 UTF-8 或 utf-8,但 UTF-8 更清晰,更易读,更准确。

此外,完全没有理由在元字符集属性或页眉中使用除 UTF-8 之外的任何值。自 1999 年 HTML4 以来,UTF-8 是 Web 文档的默认编码,也是制作现代网页的唯一实用方法。

此外,您不应该使用 UTF-8 中的 HTML 实体。应直接输入版权符号等字符。您应该使用的唯一实体是 5 个保留的标记字符:小于,大于,&符号,素数,双素数。实体需要一个 HTML 解析器,您可能不会总是想要继续使用它们,它们会引入错误,使您的代码可读性降低,增加文件大小,有时根据您使用的实体在各种浏览器中错误地解码。了解如何在内容中输入 / 插入版权,商标,公开引用,近距离引用,撇号,短划线,短划线,项目符号,欧元以及您遇到的任何其他字符,并在代码中使用这些实际字符。 Mac 有一个可以在键盘系统首选项中打开的字符查看器,您可以找到并拖放所需的字符,或使用匹配的键盘查看器查看要键入的键。例如,商标是 Option + 2。 UTF-8 包含来自每种书面人类语言的所有字符和符号。因此没有理由使用 - 而不是使用短划线。学习标点符号和排版规则也不是一个坏主意...... 例如,知道一段时间是在一个紧密的引用内,而不是在外面。

对内容类型和编码之类的内容使用标记非常具有讽刺意味,因为不知道这些内容,您无法解析文件以获取元标记的值。

不,那不是真的。浏览器开始将文件解析为浏览器的默认编码,UTF-8 或 ISO-8859-1。由于 US-ASCII 是 ISO-8859-1 UTF-8 的子集,因此浏览器可以正常读取...... 它是相同的。当浏览器遇到元字符集标记时,如果编码与浏览器已使用的编码不同,则浏览器将以指定的编码重新加载页面。这就是为什么我们将元字符集标记放在顶部,紧跟在 head 标记之后,在其他任何内容之前,甚至是标题。这样你就可以在标题中使用 UTF-8 字符。

您必须以 UTF-8 编码保存文件而不使用 BOM

这不完全正确。如果文档中只有 US-ASCII 字符,则可以将其另存为 US-ASCII 并将其作为 UTF-8 提供,因为它是一个子集。但是如果有 Unicode 字符,那么你是正确的,你必须保存为没有 BOM 的 UTF-8。

如果你想要一个能用 UTF-8 保存文件的好文本编辑器,我推荐使用 Notepad ++。

在 Mac 上,使用 Mac App Store 中的 Bare Bones TextWrangler(免费)或 Mac App Store 中的 Bare Bones BBEdit 只需 39.99 美元...... 对于这样一款出色的工具来说非常便宜。在任一应用程序中,文档窗口底部都有一个菜单,您可以在其中指定文档编码,并可以轻松选择 “UTF-8 no BOM”。当然,您可以将其设置为 “首选项” 中新文档的默认值。

但是,如果您的 Web 服务器提供 HTTP 标头中的编码(建议使用),则 [meta 标签] 都是不必要的。

那是不对的。您当然应该在 HTTP 标头中设置编码,但是您也应该在 meta charset 属性中设置它,以便用户可以将页面保存到浏览器之外的本地存储,然后再打开,在这种情况下将出现的编码的唯一指示是 meta charset 属性。你也应该设置一个基本标签,原因相同...... 在服务器上,基本标签是不必要的,但是当从本地存储器打开时,基本标签使页面能够像在服务器上一样工作,所有的资产到位等,没有断开的链接。

AddDefaultCharset UTF-8

或者您可以像这样更改特定文件类型的编码:

AddType text/html;charset=utf-8 html

提供 UTF-8 和 Latin-1(ISO-8859-1)文件的技巧是为 UTF-8 文件提供 “文本” 扩展名和 Latin-1 文件 “txt”。

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

最后,考虑使用 Unix 行结尾保存您的文档,而不是遗留的 DOS 或(经典)Mac 行结尾,这些结果无济于事,可能会受到影响,尤其是当我们越来越远离这些遗留系统时。具有有效 HTML5,UTF-8 编码和 Unix 行结尾的 HTML 文档是一项出色的工作。您可以在许多上下文中共享和编辑,存储和读取,恢复和依赖该文档。这是通用语。这是数码纸。