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
拉里