PHP JSON_ENCODE 不转义中文汉字的方法
PHP输出json数据时中文不进行unicode编码的几种方法总结json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE); // 斜杆(/)不转义,中文不转码
php json_encode /不转义,中文不转码
php json_encode使用中文不转码
PHP转JSON,中文会被转码成unicode,使用常量JSON_UNESCAPED_UNICODE可以使中文原样输入。
不使用JSON_UNESCAPED_UNICODE
echo json_encode("中文");
//Output: "\u4e2d\u6587"
使用JSON_UNESCAPED_UNICODE
echo json_encode("中文", JSON_UNESCAPED_UNICODE);
//Output: "中文"
Json在5.4还加入了: JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES等选项, 如果有兴趣, 大家可以参看: json_encode
其中有2个比较常用到的参数
JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256)
JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64)
通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?
JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
使用方法:json_encode($arr,320);即可完成同时使用2个常量。
PHP5.4才支持JSON_UNESCAPED_UNICODE这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量。
PHP json_encode 中文乱码
在编码过程中、经常会用到json_encode来处理中文、但是、出现一个问题、中文都会被转码、变为” \u**** ”的格式、如何避免被转码、
1、PHP的版本为5.4以上;
1 echo json_encode( '中文' ); // "\u4e2d\u6587"
2 echo json_encode( '中文', JSON_UNESCAPED_UNICODE ); // "中文"
2、先把汉字urlencode转码、在json_encode; 然后urldecode解码;
echo $con = '中文'; // 中文
echo $con = urlencode( $con ); // %E4%B8%AD%E6%96%87"
echo $con = json_encode( $con ); // %E4%B8%AD%E6%96%87"
echo $con = urldecode( $con ); // "中文"