未在文档级别声明字符编码


No Character encoding declared at document level

当我在 w3.org 中验证我的网站时,我得到以下信息

未在文档级别声明字符编码 在文档中找不到字符编码信息,无论是在 HTML 元元素中还是在 XML 声明中。通常建议在文档本身中声明字符编码,特别是如果文档有可能从磁盘、CD 等读取或保存到磁盘、CD 等。 有关技术和说明,请参阅此有关字符编码的教程。

搜索了谷歌并尝试了他们的建议,但没有一个对我有用。

我已经在这个问题中应用了所有建议的解决方案,但无济于事。

以下是网页的response header

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive, close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Thu, 14 Jan 2016 15:25:27 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache
Transfer-Encoding:chunked
Vary:Accept-Encoding

以及我在php基本网站中HTML文件的第一行:

<?php header('Content-type: text/html; charset=utf-8');?><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fa" lang="fa">
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
<meta content="utf-8" http-equiv="encoding" />
<meta charset="UTF-8" />

我不知道我还能做些什么来修复该消息。

感谢您的建议。

对于 XML(包括 XHTML),请在文档开头的 XML 声明中使用编码伪属性,或在实体开头使用文本声明。例:

<?xml version="1.0" encoding="utf-8" ?>

从 w3 手册。还描述了一些其他技巧。

此外,html5 规范建议,编码是区分大小写的参数,必须在文档的前 1024 个字节内声明。

此外,由于对元

元素的许多限制,每个文档只能有一个基于元的字符编码声明。

所以我建议以这种方式保留你的 http 标头:

<?php header('Content-Type: text/html; charset=utf-8');

并且只留下一种元声明,例如:

<meta charset="utf-8">

然后我们将看看它是否有帮助。

我也上传了您的示例,我收到的唯一错误在http-equivencoding参数不正确,仅通过删除此行即可解决。也许您的文件中嵌入了一些 iframe 或其他文档?