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!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值