您的位置 首页 php

php函数 json_encode注意点

在使用php编程的场景中,总有一些情况下需要将数组转为 json 字符串,就需要用到php自带的json_encode函数;

但是当数组中含有中文字符串时,转出来的结果却是以下结果(unicode字符串):

<?php
 $tmpArr = array(
 'name' => '长裤',
 'color' => 'blue',
 'size' => 'XL',
 'title' => '中年男装 长裤'
 );
 $tmpJson = json_encode($tmpArr);
 echo $tmpJson;

输出:{"name":"\u957f\u88e4","color":"blue","size":"XL","title":"\u4e2d\u5e74\u7537\u88c5 \u957f\u88e4"} 

要想中文不被转为unicode字符串,只需要给json_encode函数中传入一个参数JSON_UNESCAPED_UNICODE即可,如下:

<?php
 $tmpArr = array(
 'name' => '长裤',
 'color' => 'blue',
 'size' => 'XL',
 'title' => '中年男装 长裤'
 );
 $tmpJson = json_encode($tmpArr,JSON_UNESCAPED_UNICODE);
 echo $tmpJson;

输出:{"name":"长裤","color":"blue","size":"XL","title":"中年男装 长裤"} 

但是PHP版本<5.4.0中并不支持以上参数JSON_UNESCAPED_UNICODE,这个时候我们可以通过以下方式解决:

$tmpArr = array(
 'name' => '长裤',
 'color' => 'blue',
 'size' => 'XL',
 'title' => '中年男装 长裤'
 );

 $tmpJson = json_encode($tmpArr);
 $tmpJson = preg_replace_callback("#\\\u([0-9a-f]{4})#i", function ($matchs){
 return iconv('UCS-2BE', ' UTF-8 ', pack('H4', $matchs[1]));
 },$tmpJson);

 echo $tmpJson;

输出:{"name":"长裤","color":"blue","size":"XL","title":"中年男装 长裤"} 

好了,今天的分享就到这里,如果喜欢我的内容,欢迎转发~~

下期见!

文章来源:智云一二三科技

文章标题:php函数 json_encode注意点

文章地址:https://www.zhihuclub.com/76598.shtml

关于作者: 智云科技

热门文章

网站地图