Thinkphp调用ajaxReturn中文乱码之所以出现中文乱码,是因为Thinkphp在对数据进行转换的时候,直接使用json_encode函数。此时,我们就需要了解一下json_encode函数,该该函数会将中文转为Unicode编码这样就会出现乱码。
修改后如下:
解决办法如下:
打开Thinkphp中Controller.class.php文件。找到ajaxReturn方法,大概在文件的209行
将json_enconde处理注释掉
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data));
修改后如下:
// 返回JSON数据格式到客户端 包含状态信息
/*header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data));*/
header('Content-Type:application/json; charset=utf-8');
foreach ($data as $key => $value) {
$data[$key]=urlencode($value);
}
exit(urldecode(json_encode($data)));
/********************2016-09-08*************************************/
首先感谢@cloud594763125 提醒。通过查阅PHP手册发现,在PHP5.4版本中,针对json_encode函数,引入了参数JSON_UNESCAPED_UNICODE,可以让在进行json转换的时候,不使用unicode编码。
于是上面的程序就可以简化为如下:
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data, JSON_UNESCAPED_UNICODE));