这篇文章上次修改于 559 天前,可能其部分内容已经发生变化,如有疑问可询问作者。今天在研究写一个typecho数据转halo插件时
因为需要先把typecho数据转成json,才能导入到halo,
我最初是直接用的:
echo json_encode($arry);
结果返回结果如下:
"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 | <?php |
第二种方法
由于 JSON_UNESCAPED_UNICODE 和 JSON_UNESCAPED_SLASHES 都是常量;
JSON_UNESCAPED_UNICODE = 256
JSON_UNESCAPED_SLASHES = 64
JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
?
两个同时生效代码可以这样用,如下:
1 | <?php |
果然真就解决了~
最终效果:
测试了一波halo导入数据,分类数据成功导入~
顺便透露一下,typecho数据转halo插件完成之时,即为转halo之时~
再见 typecho,hello halo!