我正在网站上工作,当我尝试验证网页时出现以下错误:
中指定的字符编码 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的来源。有什么建议吗?
感谢。
答案 0 :(得分:1)
检查发送的默认HTTP headers(如果使用,可以在NET选项卡中的firebug中看到此内容)。
可能会将Content-Type
标头设置为iso-8859-1
。
HTTP标头与HTML标头(它是HTTP消息正文的一部分)不同 - 您的META标记指定UTF-8
作为内容类型。
由于这两个值不兼容,因此收到错误。
解决方案:
UTF-8
或iso-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');
来修复它。