如何为default.html将字符编码设置为UTF-8?

时间:2009-05-25 02:57:42

标签: html character-encoding

我花了最后几个小时让我的网站验证HTML 4.01严格,我实际上已经取得了成功,但仍然有一个我无法摆脱的警告。警告是:

  

字符编码不匹配!

     

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

相关网页是www.dubiousarray.net/default.html。正如您从页面源中看到的,我有以下元元素:

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

我确保使用UTF-8编码保存default.html文件。奇怪的是,网站中的所有其他页面都在没有此警告的情况下进行验证,并且它们具有相同的元标记,并以完全相同的方式保存。我很确定它与服务器配置有关。 .htaccess文件目前看起来像这样:

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8

但是我已经尝试了this page上显示的所有修复程序,但没有一个有效。有没有人对如何摆脱这个警告有任何想法?最后一件事,在Firefox中,如果右键单击页面并选择“查看页面信息”,则default.html显示为ISO-8859-1 而所有其他页面都显示UTF-8。

谢谢,雅各布

编辑:需要注意的是,所有的html文件都是以完全相同的方式创建和保存的(字符编码设置为UTF-8而没有BOM)但是default.html是唯一一个没有显示为UTF-8。所以我假设服务器正在对default.html文件做一些特殊的事情,虽然我不确定.htaccess文件中没有它的标志。

5 个答案:

答案 0 :(得分:26)

您需要替换HTTP级别的标题。

这应该有效:

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

请注意,上述内容必须是您文件中的第一件事。没有例外。看到 http://us2.php.net/manual/en/function.header.php

有关如何更改不同Web堆栈中的字符集标题的一般信息,请参阅 http://www.w3.org/International/O-HTTP-charset

拉​​里

答案 1 :(得分:2)

服务器在HTTP标头中清楚地将文档标记为ISO-8859-1。尝试使用正确的编辑器使用UTF-8编码保存default.html。

答案 2 :(得分:1)

好的,我已经找到了解决问题的部分方法。因为它只是导致警告的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文件做了什么,或者相关的设置在哪里,但由于我的问题已经消失,我将忘记这一点。

答案 3 :(得分:0)

您可以从AddDefaultCharset删除.htaccess并检查编码吗?我保存了您网页的HTML源代码并将其打开。编码被检测为UTF-8。但是,在查看由您的网络服务器提供的同一网页时,编码为ISO-8859-1。这就是为什么我建议删除以前的冗余规则。

答案 4 :(得分:0)

在您的代码中包含此内容:

&#13;
&#13;
<meta charset="utf-8" />
&#13;
&#13;
&#13;