validator.w3.org报告标记错误 - 检测到的字符编码“utf-8”

时间:2011-06-12 23:06:05

标签: html internet-explorer doctype

validator.w3.org报告www.besaltnlight.ca:

字符编码覆盖有效! 检测到的字符编码“utf-8”已被抑制,而“iso-8859-1”则被使用。

php代码输出iso-8859-1并且php将其设置为默认字符集。

是什么导致了这个问题?我使用了错误的doctype吗?

哦,这会导致IE中的怪癖模式吗?

感谢您的帮助。

格里

2 个答案:

答案 0 :(得分:2)

该文件采用UTF-8编码。它有一个字节顺序标记,智能引号和省略号,都以UTF-8正确编码。它以两个字节顺序标记开头,这是无效的。您必须删除一个,并且验证器还会说UTF-8文档中存在BOM可能会造成混淆,因此您可以将它们都删除。

由于您输出的是UTF-8,因此必须将HTTP标头更改为:

Content-type: text/html; charset=utf-8

由于您缺少该标题,因此强制浏览器猜测。此外,元标记必须更改为

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

出于同样的原因。

答案 1 :(得分:1)

您的输出以Unicode字节顺序标记开头,以UTF-8编码。

这可能是PHP文件的第一个字节,或主文件中包含的任何PHP文件。您的编辑甚至可能不会显示它们。解释为ISO-8859-1,输出的开头看起来像<!DOCTYPE html,它们甚至是两个字节顺序标记,一个接着一个。

正如jleedev所说,要么确保你的文件真的用Latin-1编码,要么将编码声明为UTF-8。