charset = iso-8859-1发出警告?

时间:2012-01-03 05:21:58

标签: html character-encoding doctype html-validation

我刚刚使用W3-validator验证了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标记

6 个答案:

答案 0 :(得分:17)

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

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

控件字符在HTML中无用,网页作者经常会错误地声明iso-8859-1并使用这32个值中的一个或多个,就像他们使用windows-1252一样,所以当他们看到{时,浏览器声明的{1}}字符集会自动将其更改为iso-8859-1

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

同样,这种切换发生在任何DOCTYPE的浏览器中,只是HTML5验证器比HTML4验证器更能帮助它。

答案 1 :(得分:6)

情侣点:

  1. 任何HTML5验证都应该用一点点盐。该规范仍处于积极发展阶段,并非所有内容都是一成不变的。
  2. 您正在为该元标记使用HTML4语法。试试<meta charset="iso-8859-1">
  3. 也就是说,HTML验证器在这个时代并没有那么多用途。

    另外,为什么需要指定特定的字符集?

    修改

    我的不好,显然HTML4的默认值是iso = 8869-1。也就是说,HTML5的默认字符集是utf-8。

    有关HTML5 doctype的更多信息,请参阅John Resig的this post

答案 2 :(得分:4)

“使用windows-1252而不是声明的编码iso-8859-1。” 这意味着文件在创建时保存了编码窗口1252(也就是西方Windows 1252或cp1252),并且你的字符集声明说“嘿,用iso-8859-1读取这个文件”,那不是文件的编码。

出于这个原因,存在元字符集。存在声明您正在发送/读取/使用的文件的编码,因此当例如浏览器读取文档时它知道该文件正在使用什么编码。

详细说明,您已声明此charset:

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

但是您正在验证的文件实际上是在Windows 1252中编码的。如何?为什么?检查您正在使用的文本编辑器以及用于保存文件的编码。如果可以将编辑器配置为更改编码,请选择要使用的编码。

关于HTML5

使用

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

<meta charset="iso-8859-1">

对HTML5都有效。见<meta charset="utf-8"> vs <meta http-equiv="Content-Type">

答案 3 :(得分:1)

我可以看到这是一个老问题,但认为最好提供更新的答案。也许我已经注意到其他人没有的东西(在遇到同样的问题之后因此在自己解决之前找到这篇文章)。

W3C验证器提供验证器使用的编码选项。您已在文档中指定了编码,因此一旦运行验证程序,您应在顶部信息块中看到“编码:iso-8859-1”。在右侧,有一个下拉菜单。将选项从“(自动检测)”更改为“iso-8859-1(西欧)”。验证器将使用iso-8859-1而不是自己的选择,您将不会收到错误。

答案 4 :(得分:1)

请执行以下操作:

ISO 8859-15是啊-15它会起作用。我知道这个答案是新的,问题是陈旧的,但我的想法是来自像我这样的搜索引擎的未来用户得到了正确的答案

答案 5 :(得分:0)

不要在验证器中放置太多库存。通常有太多的Internet Explorer解决方法,特别是在css中,会使验证器绊倒。如果您的网页在所有浏览器中都有效,并且您的客户很满意,那么验证员会说什么呢?

如果要指定html5 doctype,那么应该与meta charset属性保持一致。请尝试使用此页面:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
</head>

<body>
</body>
</html>