JSON_UNESCAPED_UNICODE让json_encode更适合中文

我们知道,用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!!!

猜你喜欢

转载自jordan-micle.iteye.com/blog/2221412