【问题】TP5.1开发接口过程中json数据返回的中文部分变成了16进制Unicode编码

 代码如下:

public function check_time($arr){
         if (!isset($arr['time']) || $arr['time'] <=1){
             $this->info_msg(400,'时间戳不正确.');
         }
         if (time() - intval($arr['time']) > 60){
             $this->info_msg(401,'请求超时');
         }
}

public function info_msg($code,$msg='',$data=[]){
        /****组合数组****/
	    $return_data['code']=$code;
            $return_data['msg']=$msg;
            $return_data['data']=$data;
	    echo json_encode($return_data);die();
}

请求结果发现中文部分(时间戳不正确、请求超时)被转换成了16进制的Unicode编码:

{"code":400,"msg":"\u65f6\u95f4\u6233\u4e0d\u6b63\u786e.","data":[]}
echo json_decode($return_data);
echo json($return_data);
//更换以上两种方法问题依旧。

 最终解决办法:

echo json_encode($return_data,JSON_UNESCAPED_UNICODE);die();
//json_encode()函数加上“JSON_UNESCAPED_UNICODE”参数

 问题得到解决,以下是正确的返回信息。

{"code":400,"msg":"时间戳不正确.","data":[]}

 记住这个参数:

JSON_UNESCAPED_UNICODE
//用法:json_encode($data,JSON_UNESCAPED_UNICODE);

这句的意思是Json不要编码Unicode。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值