假设有这么一个URL

```

$url = "https://www.baidu.com?key=你好";

$data = ["url" => $url];

echo json_encode($data);

```

得到这样的输出

```

{"url":"https:\/\/www.baidu.com?key=\u4f60\u597d"}

```

首先发现中文经过encode之后变成了16进制,这不是乱码,只是单纯现实方法变了,因为只需要直接通过反序列化就能得到原结果,如下:

```

//代码

$jsonStr = '{"url":"https:\/\/www.baidu.com?key=\u4f60\u597d"}';

$data = json_decode($jsonStr);

print_r($data);

//输出

stdClass Object

(

[url] => https://www.baidu.com?key=你好

)

```

可见这不是乱码,那么接下来说一说正题,虽然不是乱码,但是看着16进制总是影响阅读

可以在`json_encode`加一个参数

```

//代码

$url = "https://www.baidu.com?key=你好";

$data = ["url" => $url];

echo json_encode($data, JSON_UNESCAPED_UNICODE);

//输出

{"url":"https:\/\/www.baidu.com?key=你好"}

```

发现中文可以正常显示了,但是还有一个问题就是反斜杠被自动加了转义字符`\`

看着也挺难受的,有没有方法可以把转义符去掉

```

//代码

$url = "https://www.baidu.com?key=你好";

$data = ["url" => $url];

echo json_encode($data, JSON_UNESCAPED_SLASHES);

//输出

{"url":"https://www.baidu.com?key=\u4f60\u597d"}

```

现在转义符去掉了,但是中文又变成16进制了,我想既去掉转义符,又正常显示中文怎么办

受到*nix-like权限管理的启发,发现可以用异或运算

```

//代码

$url = "https://www.baidu.com?key=你好";

$data = ["url" => $url];

echo json_encode($data, JSON_UNESCAPED_UNICODE ^ JSON_UNESCAPED_SLASHES);

//输出

{"url":"https://www.baidu.com?key=你好"}

```

完事。

另外补充一下,

因为`JSON_UNESCAPED_UNICODE`|`JSON_UNESCAPED_SLASHES`这几个值的特殊性,因为都是通过`1 << n (n为一个整数)`得到的,所以不仅可以用异或运算,也可以直接使用加法

```

//该等式为true

((1<<1) ^ (1<<2)) === ((1<<1) + (1<<2))

```

php json 小红点,关于PHP的json_encode的一个小技巧相关推荐

  1. 如何优化小红书笔记?教你三个小技巧,让你快速提高笔记排名

    小红书推广的第一步就是发布笔记,笔记排名越靠前,流量就越大,所以做好笔记很重要,下面教你三个小技巧,让你快速提高笔记排名 1.内容优化 笔记内容撰写首先要符合小红书平台规则,原创度高,建议企业从产品卖 ...

  2. 小红书推广引流的5个小技巧_云媒易

    疫情后时代,互联网购物的狂潮久久无法平息,甚至有愈演愈烈之势.女性作为购物浪潮中的主要消费群体,把握她们的需求是非常重要的,特别是在一些女性群体的聚集地,比如小红书,就是很多品牌营销的战场之一. 相信 ...

  3. java json 内部类_使用Fastjson解析内部类的一个小问题

    使用的Fastjson的版本是1.2.7和1.2.47两个版本. 1. 问题 使用Fastjson解析包含内部类的对象时,发生异常,代码大致如下: public class HelloControll ...

  4. jq js json 转字符串_JS中JSON对象和String之间的互转及处理技巧

    json:JavaScript 对象表示法(javascript Object Notation),其实JSON就是一个javaScript的对象(Object)而已. 如有不清楚JSON,可以去w3 ...

  5. Python常用小技巧(五)——批量读取json文件

    Python常用小技巧(五)--批量读取json文件 前言:其实Python能够批量读取很多文件,这里,本人以json文件为例(json是标注图片时生成的文件,记录有标注的坐标和标签,友情推荐标注图片 ...

  6. php怎么取json数组元素个数,json,数组_取出json数据中的某一项组成一个数组?,json,数组,php - phpStudy...

    取出json数据中的某一项组成一个数组? "jobs": [ { "name": "iOS开发工程师", "salary" ...

  7. 2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,

    2022-08-02:小红拿到了一个大立方体,该大立方体由111的小方块拼成,初始每个小方块都是白色. 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,你需 ...

  8. 5 个JavaScript中使用JSON的小技巧

    关于 JavaScript的JSON的一些小技巧 1.格式化 默认的字符串化器还会缩小 JSON,看起来很难看 const user = { name: 'John', age: 30, isAdmi ...

  9. 分享 5 个 JSON 相关的常用小技巧

    关于 JavaScript的JSON的一些小技巧 1.格式化 默认的字符串化器还会缩小 JSON,看起来很难看 const user = {   name: 'John',   age: 30,    ...

最新文章

  1. I hope so 2016-Oct-10
  2. android 利用类的同名方法欺骗jni调用(一)
  3. 用python画万花筒写轮眼_万花筒写轮眼画法教程
  4. 一些有用的资源分享(工具+电子书)
  5. DNS and Bind (二)
  6. L1-007 念数字 (10分) (13行代码AC!!)
  7. java timezone_Java TimeZone inDaylightTime()方法及示例
  8. vscode 默认初始化_前端vscode 环境初始化
  9. python搭建环境教程_python教程(一)·python环境搭建
  10. ASP.NET MVC下基于异常处理的完整解决方案
  11. xshell中进入PLSQL命令不能使用方向键和退格键的做法(输入后显示乱码)
  12. 免费破解版Xshell和Xftp
  13. Qt 基于Google引擎的拼音输入法
  14. MT【293】拐点处切线
  15. OpenCV4机器学习(一):OpenCV4+VS2017环境搭建与配置
  16. 缩写月份单词python_月份的英文单词、缩写及由来
  17. 新年贺卡php,PS设计2016猴年大吉新年贺卡
  18. vmware虚拟机连不上服务器,VMware虚拟机nat模式连不上网怎么办
  19. [转]自定义Drawable实现灵动的红鲤鱼动画(上篇)
  20. 安全性设计之-ip白名单设计

热门文章

  1. 清除Eclipse和Myeclipse中的工作空间目录
  2. Mac上创建cocos2d-x工程
  3. 如何求两个矢量间的夹角
  4. HDU2110 Crisis of HDU【母函数】
  5. CCF201403-1 相反数(100分)【序列处理】
  6. UVA11161 Help My Brother (II)【大数+递推】
  7. UVA12032 The Monkey and the Oiled Bamboo【序列处理】
  8. UVA12015 Google is Feeling Lucky【最值+排序】
  9. POJ3435 Sudoku Checker【谜题+数独】
  10. Spring boot 搭建