当前位置:编程学习 > php >>

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 ); // "中文"

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,