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类
Jul 15 PHP
php 字符串替换的方法
Jan 10 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
php以post形式发送xml的方法
Nov 04 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
33道php常见面试题及答案
Jul 06 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
laravel-admin的多级联动方法
Sep 30 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中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
php输出形式实例整理
2020/05/05 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
原生python实现knn分类算法
2019/10/24 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
python 读取二进制 显示图片案例
2020/04/24 Python
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
Python面试题集
2012/03/08 面试题
儿科护士自我鉴定
2013/10/14 职场文书
工作检讨书怎么写
2014/10/10 职场文书
导游词之青岛崂山
2019/12/27 职场文书
Django显示可视化图表的实践
2021/05/10 Python
七个非常实用的Python工具包总结
2021/06/15 Python