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 相关文章推荐
数字转英文
Dec 06 PHP
PHP 截取字符串专题集合
Aug 19 PHP
php页面防重复提交方法总结
Nov 25 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
PHP中使用正则表达式提取中文实现笔记
Jan 20 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 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字符串过滤,转换函数代码
2012/05/01 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
PHP数据过滤的方法
2013/10/30 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
Python实现发送email的几种常用方法
2014/08/18 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
英语感恩演讲稿
2014/01/14 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
创先争优承诺书范文
2014/03/31 职场文书
行政专员求职信范文
2014/05/03 职场文书
党的群众路线学习材料
2014/05/16 职场文书
应届毕业生自荐书
2014/06/18 职场文书
机电系毕业生求职信
2014/07/11 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
教师远程研修感悟
2015/11/18 职场文书
高中政治教师教学反思
2016/02/23 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python