使用 PHP的 json_encode () 函数
今天需要将含有中文的数组转为json格式,第一尝试,将中文也转义了
第二次成功解决,故做此记录
尝试1:
将返回的数组直接 json_encode,发现中文也被转码了
不是我要的效果
$arr=array('key'=>'中文');
$rel=$json=json_encode($arr);
print_r($rel);
效果:{"key":"\u4e2d\u6587"}
复习小知识:
PHP5.4 以后的版本 多了一个参数,
json_encode($arr,option)
其中有2个比较常用到的参数:
参数1:中文不转为unicode ,对应的数字 256
JSON_UNESCAPED_UNICODE
json_encode($arr,JSON_UNESCAPED_UNICODE/256); //JSON_UNESCAPED_UNICODE或者数字都行
参数2:不转义反斜杠,对应的数字 64
JSON_UNESCAPED_SLASHES
json_encode($arr,JSON_UNESCAPED_SLASHES/64); //JSON_UNESCAPED_SLASHES或者数字都行
通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?
JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
使用方法:json_encode($arr,320);即可完成同时使用2个常量。
$arr = array('key'=>'中文/前面的斜杠不会被转义');
json_encode($arr,320);
效果:
{"key":"中文/前面的斜杠不会被转义"}
尝试2:
$arr=array('key'=>'中文');
$rel=$json=json_encode($arr,256);//最关键的一句
print_r($rel);
效果:
{"key":"中文"}
OK,学到了新知识,很开心 ~~