html <head> 工作不正常

html <head> not working properly

我有以下问题:

我已经使用基本的 xmlhttp 请求加载了一个页面,如下所示:

xmlhttp = getXMLHTTP();

xmlhttp.open("POST",link,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("principal").innerHTML=xmlhttp.responseText;
    }
}   

xmlhttp.send();

其中link是我要动态调用的文件源,principal是div 我想要加载它的地方。这似乎不是我的问题的主要错误(我将在下面解释),因为我已经用很多页面对其进行了测试。

我现在的问题仍然是我想在加载了 xmlhttp 的页面中有一个 "popup" 框,它将显示我的网页的条款和条件,以及 head html 标签未被解析,因为 字符集 UTF-8 未被遵守:重音符号和特殊字符与 一起出现? 符号而不是正确的符号。

我使用以下 PHP 代码加载此弹出窗口:

<?php include_once('../../info/terms_and_conds.html'); ?>

而此文件中的 HTML 代码是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>Terms and Conditions</title>
</head>
<body>

This is a test á  é  í  ó  ú   ñ   ç 

</body>
</html>

最后输出如下:

This is a test � � � � � � �

注意:我本来想 post 一张它的照片,但我没有足够的声誉。抱歉给您带来不便

我还必须指出,所有重音符号和特殊字符都在加载了 xmlhttp 请求的页面中正确显示。 会不会是 include_once() 函数导致了这个问题?

提前致谢。

可能您的网络服务器发送的字符集 header 与您在 <meta/> 标记中指定的字符集不同。尝试在 PHP 文件中明确指定内容类型 header。

<?php 
    header('Content-Type: text/html; charset=UTF-8');
    include_once('../../info/terms_and_conds.html'); 
?>

这真的只是因为编码 - 如果您将其中包含 "UTF-8" 的元标记更改为以下内容:

<meta http-equiv="Content-type" content="text/html; charset= ISO-8859-1" />

然后一切都应该按预期出现。

这里的问题是您的文件没有保存 as/encoded 为 UTF-8。

如评论中所述,使用代码编辑器(建议使用 Notepad++)打开文件并检查其编码。

如果不是 UTF-8,将其转换为 UTF-8,然后保存文件。

参考:

虽然还有其他代码编辑器会做同样的操作


脚注:

如果您以后遇到任何问题并收到 headers already sent... 警告,那么您将需要编码为不带 BOM 的 UTF-8。

一个BOM(a.k.a.字节顺序标记)算作输出(在header之前)。

这里有更多关于这个主题的内容: