php中json_encode UTF-8中文乱码的更好解决方法


Posted in PHP onSeptember 28, 2014

最近在接口代码当中用到过json_encode,在网上找到说json_encode编码设置为UTF-8中文就不会乱码,经验证这办法确实是有效果的,但是不知道为什么,代码在用过一段时间之后就不太管用了。以下是自己的解决json_encode的办法。有更好的方法请分享出来吧!

第一种:

这种简单的做一个代码转换,urlcode之后再返回所需数组

我代码这样就足够了。

代码如下 复制代码

public static function encodeOperations ($array)

{

foreach ((array)$array as $key => $value) {

if (is_array($value)) {

encodeOperations($array[$key]);

} else {

$array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));

}

}

return $array;

}

第二种:

这种是在网上看到的,然后就是有评论说会出现无限循环的问题,但是这显然很全面的,然后我测试之后也确实有,贴这里仅供参考

代码如下

/**************************************************************

*

* 使用特定function对数组中所有元素做处理

* @param string &$array 要处理的字符串

* @param string $tocode 编码后

* @param string $oldcode 编码前

* @param string $function 要执行的函数

* @return boolean $apply_to_keys_also 是否也应用到key上

* @return array $array 是否也应用到key上

* @access public

*

*************************************************************/

function encodeOperations (&$array, $function, $tocode=false,$oldcode=false,$apply_to_keys_also = false)

{

foreach ($array as $key => $value) {
(3water.com)
if (is_array($value)) {

encodeOperations($array[$key], $function, $apply_to_keys_also);

} else {

if($tocode&&$oldcode) {

if(function_exists(mb_convert_encoding)) {

$value = mb_convert_encoding($value,$tocode,$oldcode);

}else{

return "error";

}

}

$array[$key] = $function($value);

}


if ($apply_to_keys_also && is_string($key)) {

$new_key = $function($key);

if ($new_key != $key) {

$array[$new_key] = $array[$key];

unset($array[$key]);

}

}

}

return $array;

}


/****from:https://3water.com/phper/31/66729.htm**********************************************************

*

* 将数组转换为JSON字符串(兼容中文)

* @param array $array 要转换的数组

* @return string 转换得到的json字符串

* @access public

*

*************************************************************/

function JSON($array) {

arrayRecursive($array, 'urlencode', true);

$json = json_encode($array);

return urldecode($json);

}

对中文返回是null空的话我们需要进行字符转换成uft8或者先使用urlencode进行编译呼。

PHP 相关文章推荐
随机广告显示(PHP函数)
Oct 09 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
php学习之function的用法
Jul 14 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
初识PHP
Sep 28 #PHP
浅谈php和.net的区别
Sep 28 #PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 #PHP
Drupal简体中文语言包安装教程
Sep 27 #PHP
PHP常用编译参数中文说明
Sep 27 #PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 #PHP
PHP中的output_buffering详细介绍
Sep 27 #PHP
You might like
?算你??的 PHP 程式大小
2006/12/06 PHP
php getsiteurl()函数
2009/09/05 PHP
为你总结一些php信息函数
2015/10/21 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
js实现抽奖功能
2020/11/24 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
下载给定网页上图片的方法
2014/02/18 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
python列表推导式操作解析
2019/11/26 Python
法国足球商店:Footcenter
2019/07/06 全球购物
实习单位接收函
2014/01/11 职场文书
参观考察邀请函范文
2014/01/29 职场文书
学校安全责任书范本
2014/07/23 职场文书
新店开张活动方案
2014/08/24 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
创业计划书之宠物店
2019/09/19 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Django中celery的使用项目实例
2022/07/07 Python