PHP函数:json_encode中文unicode编码和斜杠转义 解决方法

今天做图片上传的时候,后台需要给前台返回一个json格式的数据,我最初是直接用的:

  <?php
$jsonstr = json_encode($arry);

结果如下:

'{"initialPreview":"1592654783258.jpg","initialPreviewConfig":[{"key":"100","caption":"\u6211\u7231\u4f60","size":"600","downloadUrl":"http:\/\/127.0.0.1\/bootstrap-fileinput\/index.php","url":"http:\/\/127.0.0.1\/bootstrap-fileinput\/index.php"}],"initialPreviewAsData":"true","append":"true"}'

 

从这里可以清楚得到如下的结论:

"caption":"\u6211\u7231\u4f60"  ----  这里本应该是中文的,结果中文被unicode编码了。

http:\/\/ ---- 这里本应该是http,结果所有的斜杠都被转义了。

 

现在前台的要求是:

为了方便处理数据,接受的数据中文必须是不被unicode编码,斜杠也不需要被转义。最终前台要的json数据格式如下:

'{"initialPreview":"1592655461258.jpg","initialPreviewConfig":[{"key":"100","caption":"我爱你","size":"600","downloadUrl":"http://127.0.0.1/bootstrap-fileinput/index.php","url":"http://127.0.0.1/bootstrap-fileinput/index.php"}],"initialPreviewAsData":"true","append":"true"}'

 

解决方法

先给大家说一点关于php中json_encode的知识点,相信,大家都知道:

 

php中json_encode有几个常量,例如:

JSON_UNESCAPED_UNICODE //中文不转为unicode

JSON_UNESCAPED_SLASHES //不转义反斜杠

......

 

这里有两种方法,具体都给大家来简单说说,以我这里为示例,让两个同时生效的方法如下:

 

第一种方法

在这俩参数中间加个“|”,代码如下:

 <?php
$jsonstr= json_encode($array,JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);

 

第二种方法

由于 JSON_UNESCAPED_UNICODE 和 JSON_UNESCAPED_SLASHES 都是常量;

JSON_UNESCAPED_UNICODE = 256

JSON_UNESCAPED_SLASHES = 64

JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

 

两个同时生效代码可以这样用,如下:

 <?php
$jsonstr= json_encode($array,320);

 

总结:

虽然我这里主要说的是让json_encode中文unicode编码和斜杠转义同时生效,如果你想单一的生效,操作原理也是一样的,替换或删除多余的就可以了,也是非常的简单。

    A+
发布日期:2020年06月20日 20:25:16  所属分类:PHP
最后更新时间:2020-06-20 20:27:47
付杰
  • ¥ 1999.9元
  • 市场价:20000元
  • ¥ 199.0元
  • 市场价:499.0元
  • ¥ 498.0元
  • 市场价:998.0元
  • ¥ 598.0元
  • 市场价:2980.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: