𝐢𝐑𝐢𝐥𝐬_𝐬

𝐑 𝐙 . 𝐒 𝐁

Please Wait...

This is my social

P O S T

Hello!

𝐖𝐞𝐥𝐜𝐨𝐦𝐞 𝐓𝐨 𝐑 𝐙.𝐒 𝐁!

About Me

Tips: 随机背景
折腾记录

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

这篇文章上次修改于 186 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
今天在研究写一个typecho数据转halo插件时

因为需要先把typecho数据转成json,才能导入到halo,

我最初是直接用的:

echo json_encode($arry);

结果返回结果如下:

QQ图片20220511233703.png

"name": "\u9ed8\u8ba4\u5206\u7c7b",
这里本应该是中文的,结果中文被unicode编码了。

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

为了方便处理数据,接受的数据中文必须是不被unicode编码,斜杠也不需要被转义。

先是百度了一波,百度无果后,咨询了下好友@wibus 收到启发,又百度了一波,找到了相关解决办法的文章:
PHP函数:json_encode中文unicode编码和斜杠转义 解决方法 - 付杰博客 (fujieace.com)

解决方法

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

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

JSON_UNESCAPED_UNICODE //中文不转为unicode

JSON_UNESCAPED_SLASHES //不转义反斜杠

……

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

?

第一种方法

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

1
2
 <?php
echo 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

?

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

1
2
 <?php
echo json_encode($array,320);

果然真就解决了~
最终效果:

QQ截图20220511234311.png

测试了一波halo导入数据,分类数据成功导入~

QQ图片20220511234400.png

顺便透露一下,typecho数据转halo插件完成之时,即为转halo之时~
再见 typecho,hello halo!

非人类论坛

Comments

PLASE WAIT...

Close