我正在进行Jquery编码,
$.ajax({
url: "dataAdd.php",
type: "POST",
data: data,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
cache: false,
dataType: "json",
success: function(data) {
$("#result").html(data["result"]);
},
error : function(jqXHR, textStatus, errorThrown) {
alert('Error: ' + jqXHR.status);
},
});
并进行以下PHP编码,
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 01 Jan 1996 00:00:00 GMT');
header('Content-type: application/json; charset=UTF-8');
session_start();
if(isset($_SESSION['username']))
{
$sess_tab = trim($_SESSION['username']);
}
$data = // Some result stuff //;
$data = array("result"=>$ress);
echo json_encode($data);
此编码完美地以英语(文本或URL)发回所有数据。但是,当涉及处理中文,日文或其他外语维基百科URL时,结果是:
此结果在FIREBUG上观察到, {result:null}
但是对于外语很少的英文文本,我们会得到以下正确答案,
{"result":"<table><tr><td align=\"center\"><div id=\"btn_mypage\"><a href=\"http:\/\/www.fran.com\" target=\"_blank\">Fran\u00e7aise Fran\u00e7ais<\/a><\/div><\/td><td align=\"center\"><div id=\"btn_mypage\"><a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81\" target=\"_blank\">Portada<\/a><\/div><\/td><td align=\"center\"><\/td><td align=\"center\"><\/td><\/tr><\/table>"}
注意:我们的contentType是contentType:“application / x-www-form-urlencoded; charset = UTF-8”,如Jquery doc指定的那样。
我们在代码中设置了dataType,header和UTF-8。 ajax json请求对所有数据总是成功,但响应很糟糕。任何人都面临类似的情况和任何建议吗?
如果您在查询中发现任何错误,请自由编辑。
有没有人知道如何修改以下编码以接受或接收ajax json响应中的所有语言?这可以在另一个stackoverflow问题中找到。
<?php
header("Content-type: text/csv; charset=GB2312");
$arr = array('丂','亐');
echo json_encode($arr);
?>
这个问题似乎需要专家jquery ajax程序员。我们应该将问题状态移到Jquery Ajax团队吗?
答案 0 :(得分:2)
哇,
在发回ajax-json响应之前,只需使用PHP函数mb_convert_encoding。我感谢大家花时间分析这个问题。
<?php
// Add this line as we are sending back html with non-english response before the last two lines.
$ress =$info = mb_convert_encoding($ress, "HTML-ENTITIES", "UTF-8");
$data = array("result"=>$ress);
echo json_encode($data);
?>