编程学习网 > PHP技术 > 如何让php中JSON编码函数网页显示中文
2021
09-08

如何让php中JSON编码函数网页显示中文

php中操作 JSON 其实非常简单,大家最常用的无非也就是 json_encode() 和 json_decode() 这两个函数。但是在操作过程中会发现中文字符被替代了,比如以下面一个代码为例

$data = [
    'id' => 1,
    'name' => '测试情况',
    'cat' => [
        '学生 & "在职"',
    ],
    'number' => "123123123",
    'edu' => [
        [
            'name' => '<b>中学</b>',
            'date' => '2015-2018',
        ],
        [
            'name' => '<b>大学</b>',
            'date' => '2018-2022',
        ],
    ],
];
以上代码非常简单地数组,其实也没有什么特别的东西,只是有数据的嵌套,有一些中文和特殊符号而已。当用 json_encode() 试过以后

$json1 = json_encode($data);
var_dump($json1);
// string(215) "{"id":1,"name":"\u6d4b\u8bd5\u60c5\u51b5","cat":["\u5b66\u751f & \"\u5728\u804c\""],"number":"123123123","edu":[{"name":"<b>\u4e2d\u5b66<\/b>","date":"2015-2018"},{"name":"<b>\u5927\u5b66<\/b>","date":"2018-2022"}]}"

上面编码后的 JSON 数据发现了什么问题没?没错,相信不少人一眼就会看出,中文字符全被转换成了 \uxxxx 这种格式。这其实是在默认情况下,json_encode() 函数都会将这些多字节字符转换成 Unicode 格式的内容。我们直接在 json_encode() 后面增加一个常量参数就可以解决这个问题,让中文字符正常地显示出来。

$json1 = json_encode($data, JSON_UNESCAPED_UNICODE);
var_dump($json1);
// string(179) "{"id":1,"name":"测试情况","cat":["学生 & \"在职\""],"number":"123123123","edu":[{"name":"<b>中学<\/b>","date":"2015-2018"},{"name":"<b>大学<\/b>","date":"2018-2022"}]}"

但当如果不用常量参数,有什么解决方案呢?

其实就是一个很简单地解决方案,递归地将数据中所有字段内容转换成 urlencode() 编码,然后再使用 json_encode() 编码,完成之后再使用 urldecode() 反解出来。是不是有点意思?其实这是不少老程序员的一个小技巧,因为 JSON_UNESCAPED_UNICODE 这个常量是在 PHP5.4 之后才有的,之前的话如果想让编码后的数据直接显示中文,就只能这样操作了。

以上就是“如何让php中JSON编码函数网页显示中文”的详细内容,想要了解更多php教程欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取