2011-06-01 88 views
1

我一直在试图从AJAX请求返回特殊字符到PHP脚本。Javascript AJAX返回特殊字符

作出回应的字符串: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â2â3â4â5â6â7â8é9A©10â11â12â13ñ14A±15â16ñ17A±18 19 20A©21A©22Ã23ñ24A±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

你的HTML代码字符集可以说ISO-8859 -1但你确定你保存了ISO-8859-1的数据吗?数据可以保存为UTF-8或Windows CP-1252

+0

在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” 这会被认为是UTF-8或Windows CP-1252?我想,我用明确的字符串回应? – deDogs 2011-06-01 19:10:15

+0

您用来创建PHP代码的编辑器将文件(包括您的特殊字符串)保存到磁盘。你在用什么编辑器?大多数编辑器都有一个设置/首选项/选项来设置字符集的使用/保存/编辑。 – mrk 2011-06-01 19:13:21

+0

谢谢马克,我使用记事本创建html,php和js文件。我尝试将字符串减少为单个字符(ñ),该页面无法正确显示。谢谢 – deDogs 2011-06-01 20:50:56

1

看起来像你收到的文本获得不同的编码风格。

可能这会帮助你。

尝试在发出请求时更改内容类型。

xhr.setRequestHeader("Content-type", "text/richtext"); 

或者任何适合于传送内容的东西。以下链接可能会帮助您选择内容类型。

http://www.utoronto.ca/web/htmldocs/book/book-3ed/appb/mimetype.html#text

+0

请注意,“text/richtext”可能与“text/richtext”的处理方式不同。不确定这个额外空间是否会破坏你想要做的事情。 – mrk 2011-06-01 18:34:00

+0

我同意。让我删除额外的空间。 – SaravananArumugam 2011-06-01 18:35:18