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
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
php json与xml序列化/反序列化
Oct 28 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php超快高效率统计大文件行数
Jul 05 PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 PHP
CI配置多数据库访问的方法
Mar 28 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
python实现巡检系统(solaris)示例
2014/04/02 Python
python合并同类型excel表格的方法
2018/04/01 Python
python实现自动登录后台管理系统
2018/10/18 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python下载微信公众号相关文章
2019/02/26 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
酒店出纳岗位职责
2013/12/29 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
担保书范文
2015/01/20 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
企业文化学习心得体会
2016/01/21 职场文书
python requests模块的使用示例
2021/04/07 Python
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android