'charset=iso-8859-1' 与 <!DOCTYPE HTML> 发出警告

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

我刚刚使用 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标签?
html character-encoding doctype w3c-validation
6个回答
20
投票

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

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

控制字符在 HTML 中毫无用处,网络作者经常错误地声明

iso-8859-1
,但却像使用
windows-1252
一样使用这 32 个值中的一个或多个,因此浏览器在看到声明的
iso-8859-1
字符集时会自动将其更改为
windows-1252

验证器只是警告您这种情况将会发生。如果您没有使用任何 32 字节值,那么您可以简单地忽略该警告 - 这“不是”错误。如果是,并且您确实想要字节值的 iso-8859-1 解释而不是

windows-1252
解释,那么您就做错了。
同样,这种切换发生在任何 DOCTYPE 的浏览器中,只是 HTML5 验证器比 HTML4 验证器更能帮助您了解它所告诉您的内容。


7
投票

任何 HTML5 验证都应该持保留态度。该规范仍在积极开发中,并非一切都是一成不变的。
  1. 您正在为该元标记使用 HTML4 语法。试试
  2. <meta charset="iso-8859-1">
  3. 
    
  4. 也就是说,HTML 验证器在当今时代没有多大用处。

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

有关 HTML5 文档类型的更多信息可以在

John Resig

这篇文章 中找到。


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


这意味着文件在创建时使用编码
Windows-1252

保存(又名 Western Windows 1252 或 CP1252),并且您的 charset 声明显示“嘿,请使用 ISO 8859-1 读取此文件”,而这不是文件的编码有。 元字符集正是出于这个原因而存在。它的存在是为了声明您正在发送/读取/使用的文件的编码,因此当浏览器读取文档时,它知道该文件正在使用什么编码。

详细来说,您已声明此字符集:

<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 有效。请参阅 


1
投票

在其右侧,有一个下拉菜单。将选项从“(自动检测)”更改为“iso-8859-1(西欧)”。然后,验证器将使用

ISO 8859-1

而不是自己的选择,并且您将不会收到错误。


1
投票

ISO 8859-15

。是的,-15,它会起作用。


0
投票
Internet Explorer

解决方法,特别是在 CSS 内容中,这会导致验证器出错。如果您的页面可以在所有浏览器中运行并且您的客户满意,那么某些验证器说什么并不重要。 如果您指定 HTML5 doctype,那么您应该与元字符集属性保持一致。在你的页面上尝试一下这个:

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

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