PHP中json_encode避免出现unicode编码-解决方案

云梦博客
80
文章
0
评论
2018年5月31日04:26:06 评论 813字阅读2分42秒

PHP中,我们在使用 json_encode 时,如果数据中出现中文,中文会被转换成 unicode 编码。如下面这种

  1. <?php
  2. date_default_timezone_set('Asia/Shanghai');
  3. $array = array('这是测试的中文','this is english');
  4. echo json_encode($array);

输出结果为:

["这是测试的中文","this is english"]

这种结果是正确的,也很常见;并且在 javascript 中是可以正常解析的。但是,我们有时候并不需要 unicode 编码,比如数据库的可见性。这个时候也可以实现,解决方法是,在 json_encode 之前,对中文进行 urlencode(),然后再进行转 json,最后将 json 进行 urldecode() 转换回来就可以。

  1. <?php
  2. date_default_timezone_set('Asia/Shanghai');
  3. $array = array('这是测试的中文','this is english');
  4. $data = array();
  5. foreach($array as $k => $v){
  6. $data[] = urlencode($v);
  7. }
  8. echo urldecode(json_encode($data));

输出结果如下:

["这是测试的中文","this is english"]

这样,我们的问题也就解决了,常见的有天气预报的接口返回值就是这样的。需要我们注意的是 json_encode()只支持UTF-8编码。所以如果是其它编码的时候还需要转换一下。如:iconv(),当然方法也很多了,在PHP5.4的版本中 json_encode()已经支持不转换编码,例:json_encode($str, JSON_UNESCAPED_UNICODE)

通过以上方法,就可以避免 json_encode()中出现unicode编码。

继续阅读
weinxin
我的微信公众号
扫一扫获取最新动态
  • 文本由 发表于 2018年5月31日04:26:06
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
生活中的苟且 网络杂谈

生活中的苟且

生活中的苟且代表的什么,而诗和远方又是什么。人们常说在生活中若是跨过去了就是诗和远方,跨不过去就只能苟且。在海子的诗中也这样写到:我有一所房子,面朝大海,春暖花开……。我只愿面朝大海,春暖花开。   ...
0基础30天精通网站建设,月入6000元起 网红项目

0基础30天精通网站建设,月入6000元起

读完本篇,将教给你月收入6000元的能力,这里将要介绍一套技术实操型课程,同时会免费送每位读者一个价值12000元的课程。这是一门真正的技术,是所有网络项目的基础,是网“贝兼”的必备技能,也是目前市场...
MySQL实战篇:建立高性能的MySQL技巧 网络杂谈

MySQL实战篇:建立高性能的MySQL技巧

前言 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特...
MySQL进阶:从小工到专家的必读书籍 网络杂谈

MySQL进阶:从小工到专家的必读书籍

各大论坛上总是有很多同学咨询学习MySQL有哪些书,或者是入行DBA要做哪些准备。今天就和大家分享下想学习MySQL可以选择哪些书籍。 数据是Web应用程序最重要的部分。随着互联网和高端Web应用程序...