位置:长沙达内IT教育培训学校 > 学校动态 > 如何让JSON编码函数网页显示中文
在php中操作 JSON 其实非常简单,大家较常用的无非也就是 json_encode() 和 json_decode() 这两个函数。但是在操作过程中会发现中文字符被替代了,比如以下面一个代码为例
$data = [
'id' => 1,
'name' => '测试情况',
'cat' => [
'学生 & ""',
],
'number' => "123123123",
'edu' => [
[
'name' => '中学',
'date' => '2015-2018',
],
[
'name' => '大学',
'date' => '2018-2022',
],
],
];
以上代码非常简单地数组,其实也没有什么特别的东西,只是有数据的嵌套,有一些中文和特殊符号而已。当用 json_encode() 试过以后
1
2
3$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":"\u4e2d\u5b66<\/b>","date":"2015-2018"},{"name":"\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>","date":"2015-2018"},{"name":"大学<\/b>","date":"2018-2022"}]}"
但当如果不用常量参数,有什么解决方案呢?
其实就是一个很简单地解决方案,递归地将数据中所有字段内容转换成 urlencode() 编码,然后再使用 json_encode() 编码,完成之后再使用 urldecode() 反解出来。是不是有点意思?其实这是不少老程序员的一个小技巧,因为 JSON_UNESCAPED_UNICODE 这个常量是在 PHP5.4 之后才有的,之前的话如果想让编码后的数据直接显示中文,就只能这样操作了。
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1684/news/480316/违者必究! 以上就是长沙达内IT教育培训学校 小编为您整理 如何让JSON编码函数网页显示中文的全部内容。