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

Jac*_*cey 16 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">
Run Code Online (Sandbox Code Playgroud)

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

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8
Run Code Online (Sandbox Code Playgroud)

但我已尝试过本页显示的所有修复程序,但没有一个能够正常工作.有没有人对如何摆脱这个警告有任何想法?最后一点,在Firefox中,如果右键单击页面并选择"查看页面信息",则default.html显示为ISO-8859-1,而所有其他页面显示为UTF-8.

谢谢你,雅各布

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

Lar*_*y K 26

您需要替换HTTP级别的标头.

这应该工作:

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

请注意,上面必须是您文件中的第一件事.没有例外.见 http://us2.php.net/manual/en/function.header.php

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

拉里