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 相关文章推荐
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
thinkphp循环结构用法实例
Nov 24 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
php实现将Session写入数据库
Jul 26 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python如何定义有可选参数的元类
2020/07/31 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
大学毕业生自我鉴定
2013/11/05 职场文书
联谊活动策划书
2014/01/26 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
争做文明公民倡议书
2014/08/29 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2014年路政工作总结
2014/12/10 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python