html & lt; 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,将显示我的网页的条款和条件,和 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 � � � � � � �

注:我本想贴一张它的照片,但是我没有足够的声望。给您带来的不便,敬请谅解

我还必须保证所有的重音和特殊字符都正确地显示在使用xmlhttp Request加载的页面中。它可能是include_once()函数产生这个问题吗?

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

如注释所述,使用代码编辑器(建议使用notepad++)打开文件并检查其编码。

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

参考:

  • https://notepad-plus-plus.org/- notepad++ (for Windows)

尽管还有其他代码编辑器可以执行相同的操作


脚注:

如果您以后有任何问题,并且已经发送了标题…警告,那么您将需要编码为没有BOM的UTF-8。

一个BOM(又名字节顺序标记)算作输出(在报头之前)。

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

  • https://en.wikipedia.org/wiki/Byte_order_mark

可能您的web服务器正在发送不同的字符集头比您指定的<meta/>标签。尝试在PHP文件中显式指定内容类型头。

<?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" />