html无法正常工作

时间:2015-07-29 10:26:33

标签: javascript php html utf-8 xmlhttprequest

我有以下问题:

我使用基本的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();

链接是我要动态调用的文件的来源,而 principal 是我希望它加载的div。这似乎不是我的问题的主要错误(我将在下面解释),因为我已经测试了很多页面。

我现在的问题仍然是我希望在xmlhttp页面中加载一个“popup”框,它会显示我的网页的条款和条件,以及 head html由于 charset 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请求加载的页面中正确显示。 可能是 include_once()函数产生此问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:4)

此处的问题是您的文件未保存为/编码为UTF-8。

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

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

参考:

虽然还有其他代码编辑器可以执行相同的操作。

脚注:

如果您以后遇到任何问题并且已经发送了标题...警告,那么您将需要编码为UTF-8而不使用BOM。

BOM(即。字节顺序标记)计为输出(标题之前)。

以下是有关该主题的更多信息:

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

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