php json_encode中文不转义

 
更多

php json_encode函数处理完包含中文的字符串之后,中文会被处理成一串看不懂的字符串,非常不方便,查了一下php文档,发现自php 5.4起,json_encode新增了一个参数 JSON_UNESCAPED_UNICODE。

JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256)

另一个比较常用的参数:

JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64)

注意:通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?

JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

使用方法:json_encode($arr, 320); 即可完成同时使用2个常量。

对于php 5.3 及以下版本的可通过如下函数进行处理

function json_encode($array) {
    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
        $str = json_encode($array);
        $str = preg_replace_callback("#\\\u([0-9a-f]{4})#i", function ($matchs) {
            return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
        }, $str);
        return $str;
    } else {
        return json_encode($array, JSON_UNESCAPED_UNICODE);
    }
}
打赏

本文固定链接: https://www.cxy163.net/archives/3394 | 绝缘体

该日志由 绝缘体.. 于 2019年01月27日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: php json_encode中文不转义 | 绝缘体
关键字: , , , ,

php json_encode中文不转义:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter