jQuery ajax + responseText +字符编码

我在JavaScript中使用jQuery库对PHP脚本执行AJAX请求。
这是执行AJAX请求的命令:

$.ajax({ async: "false", cache: "false", data: {login: strLogin, password: strPassword}, datatype: "text", error: connexionAjaxError, success: connexionAjaxSuccess, type: "POST", url: "./Connexion" }); 

“.Connexion”是我的PHP脚本的URL重定向。
connexionAjaxError是一旦收到HTTP响应就不可避免地执行的JavaScript函数。
原因是:我的PHP脚本导致文本/普通页面的HTTP状态代码等于500。
这是我的PHP脚本中最相关的部分:

 header("HTTP/1.0 500 Internal Server Error; Content-type: text/plain; charset=ISO-8859-1"); echo "été"; 

这是connexionAjaxError回调函数的签名:

 function connexionAjaxError(jqXHR, textStatus, errorThrown) 

我的PHP结果为字符串“été”。
我的PHP内部编码是ISO-8859-1,因此结果字符串以hex表示法编码[e9 74 e9]。

但是connexionAjaxError回调函数中的jqXHR.responseText包含一个1个字符的字符串。
我已经使用JavaScript String对象的charCodeAt方法来获取字符的unicode(UTF-8?)代码。
该字符以hex表示法编码65535,等效于hex表示法中的[ff ff]。

我不明白为什么jqXHR.responseText不包含3个字符的字符串“été”。
我不是JavaScript方面的专家,但我认为jqXHR.responseText只能包含以UTF-8编码的字符串。
因此,jqXHR.responseText中的字符串“été”将以hex表示法编码[c3a9 74 c3a9]。
我从以下网站检索了字符“é”的UTF-8代码: http : //www.utf8-chartable.de/

我用西class牙语进行了很多开发,我注意到了一些可能对你有帮助的事情,因为我已经经历过这个:

头函数中的字符集应为UTF-8。

此外,FILE本身(PHP脚本)必须以UTF-8保存,如果使用Notepad ++编辑文件并选择不带BOM的UTF-8编码,则可以轻松实现此目的。

对于你的javascript和HTML文件也一样,它们都应该用UTF-8编码,而不是BOM而不是ANSI。

让我知道!

尝试在你的调用中设置这样的Contenttype,据我所知,如果没有指定,jQuery Ajax总是utf-8。

 $.ajax({ ... datatype: "text", contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1", error: connexionAjaxError, success: connexionAjaxSuccess, type: "POST", ... }); 

编辑:如果我的答案没有帮助,如果您检查服务器字符集配置,并发布它可能会有所帮助。