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实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP实现的支付宝支付功能示例
Mar 26 PHP
PHP之认识(二)关于Traits的用法详解
Apr 11 PHP
php将字符串转换为数组实例讲解
May 05 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
js星星评分效果
2014/07/24 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
windows下ipython的安装与使用详解
2016/10/20 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python requests指定出口ip的例子
2019/07/25 Python
python 字典套字典或列表的示例
2019/12/16 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
Java中实现多态的机制是什么?
2014/12/07 面试题
学院领导推荐信
2013/10/30 职场文书
仓库门卫岗位职责
2013/12/22 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android