//gbk编码 $gbk = '中文'; echo json_encode($gbk);//null
原因:因为json_encode只支持utf-8的编码,对于英文没有什么影响,但是对于中文就会有问题了。
解决办法:
$gbk = urlencode('中文'); echo urldecode(json_encode($gbk));//中文
并不是非得用urlencode编码,也可以用别的编码,例如base64_encode等等,大家可以多尝试一下
2、ajax调用后端gbk编码接口会出现乱码
原因:因为Ajax返回的数据默认的字符编码是utf-8
解决办法: 在后端,如php加上
header('Content-Type:text/html;charset=utf-8');//如果是json最好用Content-Type: application/json或text/plain
3、utf8编码的json_encode也会被编码,变成不可读的, 类似”\u***”的格式,Ajax调用也同样的问题
原因:json_encode对中文支持不好
解决办法:(1)可以参考第一种方法;(2)从PHP5.4开始,在json_encode中有了第二个参数,可以通过传入JSON_UNESCAPED_UNICODE解决,例如
echo json_encode('中文',JSON_UNESCAPED_UNICODE);//中文
推荐:采用UTF8编码,php尽量升级到5.4以上的版本
PS:如果有任何问题,欢迎提出