全国服务热线:400-6263-721

位置:长沙达内IT教育培训学校 > 学校动态 > 如何让JSON编码函数网页显示中文

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

来源:长沙达内IT教育培训学校时间:2022/2/8 16:42:29

  在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编码函数网页显示中文的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-721