为什么我的html编码导致错误?

时间:2010-10-06 14:54:29

标签: validation xhtml-transitional

我正在网站上工作,当我尝试验证网页时出现以下错误:

  

中指定的字符编码   HTTP标头(iso-8859-1)是   不同于的价值   元素(utf-8)。我会用这个值   来自HTTP头(iso-8859-1)   这个验证。

以下是我标题中的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>

我没看到iso-8859-1的来源。有什么建议吗?

感谢。

3 个答案:

答案 0 :(得分:1)

检查发送的默认HTTP headers(如果使用,可以在NET选项卡中的firebug中看到此内容)。

可能会将Content-Type标头设置为iso-8859-1

HTTP标头与HTML标头(它是HTTP消息正文的一部分)不同 - 您的META标记指定UTF-8作为内容类型。

由于这两个值不兼容,因此收到错误。

解决方案:

  • 使两种内容类型相同(UTF-8iso-8859-1

答案 1 :(得分:1)

这是指定HTTP标头中的编码的网络服务器。它将它设置为iso-8859-1。但是在你的页面中,你写道:

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

这两个值不相容。我只能假设网络服务器是正确的(无论如何都发送了数据),验证器也做了同样的假设。

如果要发送UTF-8编码文件,请检查内容是否真的是UTF8编码,并检查标题信息。最终,行为取决于Web服务器配置和页面生成。

答案 2 :(得分:1)

这是HTML文件的标题,而不是服务器发送的HTTP标头。元素定义了HTTP头的等价物。如果同时发送HTTP标头并且存在具有等效项的元元素,则用户代理必须决定使用哪个元素。它可能在您的浏览器中工作,但您使用的验证器似乎优先于实际的HTTP标头。

因此,您必须弄清楚如何让您的服务器发送正确的Content-type标头。如果您的页面是由PHP脚本生成的,则可以在脚本开头使用header('Content-type:text/html;charset=UTF-8');来修复它。