我花了几个小时让我的网站严格验证HTML4.01,实际上我已经成功了,但仍然有一个警告是我无法摆脱的。警告是:
字符编码不匹配!
HTTP标头中指定的字符编码(iso-8859-1)与元素中的值(utf-8)不同。我将使用HTTP报头中的值(iso-8859-1)进行此验证。
有问题的页面是www.dubiousarray.net/default.html。正如您从页面源代码中看到的,我有以下meta元素:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
并且我已经确保default.html文件是以UTF8编码保存的。奇怪的是,站点中的所有其他页面都在没有此警告的情况下进行验证,它们具有相同的meta标记,并且以完全相同的方式保存。我很确定这与服务器配置有关。.htaccess文件目前如下所示:
# Use PHP 5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8
但我已经尝试了this page上显示的所有修复程序,但没有一个有效。我怎样才能摆脱这个警告呢?
在火狐中,如果你用鼠标右键点击页面并选择“查看页面信息”,default.html会显示为ISO-8859-1,而所有其他页面都会显示为UTF-8。
所有的html文件都是以完全相同的方式创建和保存的(字符编码设置为UTF-8,没有BOM),但是default.html是唯一一个没有显示为UTF-8的文件。因此,我假设服务器正在对default.html文件做一些特殊的操作,尽管我不确定是什么,因为在.htaccess文件中没有它的标志。
发布于 2009-05-25 05:30:00
您需要替换HTTP级别的标头。
这应该是可行的:
<?php
header('Content-type: text/html; charset=utf-8');
?>
请注意,上述内容必须是文件中的第一个内容。没有例外。参见。
有关如何在不同的web堆栈中更改字符集标题的一般信息,请参阅。
发布于 2009-05-24 19:07:01
服务器在HTTP标头中明确地将文档标记为ISO-8859-1。尝试使用合适的编辑器保存使用UTF-8编码的default.html。
发布于 2009-05-24 20:20:18
好了,我已经想出了我的问题的部分解决方案。因为只有default.html文件引起了警告,所以我认为服务器正在对它做一些特殊的操作,因为它的名称。因此,我创建了一个名为home.html的新文件,其内容与default.html文件相同,并将.htaccess文件指向新文件(请参见下面的第3行)。
# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
DirectoryIndex home.html
AddDefaultCharset UTF-8
这解决了这个问题,所有的文件现在都被识别为UTF-8。我仍然不确定服务器对default.html文件做了什么,也不知道与此相关的设置在哪里,但随着我的问题消失,我会忘记这一点。
https://stackoverflow.com/questions/905173
复制相似问题