我们知道,用PHP的json_encode来处理中文的时候,中文会被unicode编码,类似\u***的格式。不可读且在一定程度上增加传输的数据量。
例如:
echo json_encode("中文"); //结果为:"\u4e2d\u658"
因为不可读,这对于开发过程中进行调试很是头疼。那么有没有解决的办法呢?
在PHP5.4,这个问题终于得到解决。json_encode新增了第二个参数:JSON_UNESCAPED_UNICODE,顾名思义,不要用unicode编码中文。
看下面的例子:
echo json_encode("中文", JSON_UNESCAPED_UNICODE); //结果为:"中文"
See?输出结果可读。但仍有一个疑问:PHP开发最经常用到JSON输出的情况是,来自前端AJAX的请求,而且jQuery的$.ajax方法解析json_encode($var)返回的结果非常流畅。那么现在实现了可读性结果输出,对jQuery的解析有没有影响呢?看下面的例子:
$.ajax({ type: 'GET', url: 'back.php', success: function(xhr) { document.write("key1:" + xhr.key1 + "<br>"); document.write("中文键:" + xhr.中文键 + "<br>"); }, dataType: 'JSON' })
后端代码:
$var = array( 'key1' => 'this is key', '中文键' => '中文值', 'key2' => '中文abc' ); echo json_encode($var, JSON_UNESCAPED_UNICODE);
输出结果:
PERFECT!!!