我有以下问题:
我使用基本的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()函数产生此问题吗?
提前致谢。
答案 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" />
然后一切都应该按照预期出现。