带有 <!DOCTYPE HTML> 的“charset=iso-8859-1”发出警告

新手上路,请多包涵

我刚刚使用 W3C 验证器 验证了一个 HTML 文档,发现如果我使用:

 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

和:

 <!DOCTYPE HTML>

  • 它会发出警告 Line 4, Column 72: Using windows-1252 instead of the declared encoding iso-8859-1.

但是,如果我使用它是固定的:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

我真的不明白发生了什么。另外,我什至不知道如何使用 DOCTYPE 标签,我只是从网上复制并粘贴了一个标签。

  • 为什么会这样?
  • 我应该如何使用 DOCTYPE 标签?

原文由 ajax333221 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 560
2 个回答

几点:

  1. 任何 HTML5 验证都应该持保留态度。该规范仍在积极开发中,并非一切都是一成不变的。
  2. 您正在为该元标记使用 HTML4 语法。尝试 <meta charset="iso-8859-1">

也就是说,HTML 验证器在当今时代并没有那么多用途。

但显然 HTML4 的默认值是 iso=8869-1。也就是说,HTML5 的默认字符集是 UTF-8。

有关 HTML5 文档类型的更多信息,请参阅 John Resig这篇文章

原文由 Andrew Stewart 发布,翻译遵循 CC BY-SA 4.0 许可协议

更改 DOCTYPE 只是关闭警告 - 它实际上并没有修复任何东西。

iso-8859-1windows-1252 是非常相似的编码。它们的区别仅在于与从 0x80 到 0x9F 的 32 字节值相关的字符,在 iso-8859-1 中映射到控制字符,在 windows-1252 中映射到一些有用的字符,例如欧元象征。

控制字符在 HTML 中是无用的,网络作者经常错误地声明 iso-8859-1 并使用这 32 个值中的一个或多个,就好像他们在使用 windows-1252 ,因此浏览器在看到 iso-8859-1 声明的字符集将自动更改为 windows-1252

验证器只是警告你这会发生。如果您没有使用任何 32 字节值,那么您可以简单地忽略警告——这 不是 错误。如果你是,并且你真的想要字节值的 iso-8859-1 解释而不是 windows-1252 解释,你做错了什么。

同样,对于任何 DOCTYPE,这种切换都发生在浏览器中,只是 HTML5 验证器比 HTML4 验证器在告诉您的内容方面更有帮助。

原文由 Alohci 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题