我一直在尝试将特殊字符从AJAX请求返回到PHP脚本。
响应字符串:abcde1'2'3'4'5“6”7-8é9é10'11'12'13ñ14ñ15'16ñ17ñ181920é21é22í23ñ24ñ25'26ñ27ó28ú29'fghij
使用JavaScript提醒,它显示:abcde1ââââââââââââââââââââââé9é10âââââââââÃ14 14±16â16ñ17ñ181920é21é22Ã23ñ24ñ25â26ñ27ó28ú29âfghij
代码如下:
HTML文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
<title></title>
<script src="js/phpTest.js" charset="ISO-8859-1" type="text/javascript"></script>
</head>
<body>
<input id="Submit1" type="submit" value="submit" onclick=" initXHR();return false;" />
</body>
</html>
JS文件:
var xhr;
//;charset=ISO-8859-1
function initXHR() {
getXHRobj();
xhr.open('POST', 'phpinfo.php', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", 10);
xhr.setRequestHeader("Connection", "close");
xhr.send("");
return false;
}
function getXHRobj() {
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
else {
throw new Error("Ajax is not supported by this browser");
}
xhr.onreadystatechange = function XHRresp() {
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 300) {
document.write("1. " + xhr.responseText);
}
else {
alert(xhr.responseText);
}
}
}
}
和PHP文件:
<?php
header("Content-Type: text/html;charset=ISO-8859-1");
print "abcde1’2’3’4’5“6”7–8é9é10’11’12’13ñ14ñ15’16ñ17ñ18 19 20é21é22í23ñ24ñ25’26ñ27ó28ú29’fghij";
?>
谢谢你, deDogs
答案 0 :(得分:1)
看起来您收到的文字会有不同的编码风格。
这可能会对你有所帮助。
尝试在发出请求时更改内容类型。
xhr.setRequestHeader("Content-type", "text/richtext");
或任何适合转移内容的内容。以下链接可能有助于您选择内容类型。
http://www.utoronto.ca/web/htmldocs/book/book-3ed/appb/mimetype.html#text
答案 1 :(得分:0)
HTML代码中的charset可能会说ISO-8859-1,但您确定已将数据保存在ISO-8859-1中吗?数据可以保存为UTF-8或Windows CP-1252