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
一个用php3编写的简单计数器
Oct 09 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
详解PHP PDO简单教程
May 28 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
Aug 03 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
PHP静态成员变量
2017/02/14 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
PHP强制转化的形式整理
2020/05/22 PHP
JavaScript实现拼音排序的方法
2012/11/20 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python重要函数eval多种用法解析
2020/01/14 Python
Django 再谈一谈json序列化
2020/03/16 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
创先争优一句话承诺
2014/05/29 职场文书
酒店端午节活动方案
2014/08/26 职场文书
投资意向协议书
2015/01/29 职场文书
化验员岗位职责
2015/02/14 职场文书
人代会简报
2015/07/21 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
Python Parser的用法
2021/05/12 Python
mysql全面解析json/数组
2022/07/07 MySQL