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,然后保存文件。
参考:
- https://notepad-plus-plus.org/ - 记事本++(对于Windows)
虽然还有其他代码编辑器会做同样的操作
脚注:
如果您以后遇到任何问题并收到 headers already sent... 警告,那么您将需要编码为不带 BOM 的 UTF-8。
一个BOM(a.k.a.字节顺序标记)算作输出(在header之前)。
这里有更多关于这个主题的内容:
我有以下问题:
我已经使用基本的 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,然后保存文件。
参考:
- https://notepad-plus-plus.org/ - 记事本++(对于Windows)
虽然还有其他代码编辑器会做同样的操作
脚注:
如果您以后遇到任何问题并收到 headers already sent... 警告,那么您将需要编码为不带 BOM 的 UTF-8。
一个BOM(a.k.a.字节顺序标记)算作输出(在header之前)。
这里有更多关于这个主题的内容: