文档章节

关于json_encode中文乱码问题的解决方式

Deacyn
 Deacyn
发布于 2014/09/17 19:54
字数 410
阅读 280
收藏 6

第一种:

    这种简单的做一个代码转换,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) {

            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;

    }

     

    /**************************************************************

     *

     *    将数组转换为JSON字符串(兼容中文)

     *    @param  array   $array      要转换的数组

     *    @return string      转换得到的json字符串

     *    @access public

     *

     *************************************************************/

    function JSON($array) {

        arrayRecursive($array, 'urlencode', true);

        $json = json_encode($array);

        return urldecode($json);

    }


© 著作权归作者所有

共有 人打赏支持
Deacyn
粉丝 6
博文 60
码字总数 31388
作品 0
朝阳
程序员
私信 提问
关于java发送http请求时中文乱码的一种解决办法

在jsp中常见的乱码解决办法无外乎是关于get和post两种方式的,但只有切实地在实践中使用时才会注意或者说注重到其他方式。例如,在http请求头中传送中文参数,出现乱码,如何解决? 实际场景...

chace0120
2014/03/13
0
0
PHP json_encode() 函数详解及中文乱码问题

在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。 这个函数的功能是将数值转换成json数据存储格式。 ? 1 2 3 4 5 6 7 8 9 程序运...

zyt_1978
2016/06/19
31
0
echo json_encode() 输出中文不显示

PHP默认的jsonencode编码出来的是unicode编码的,也就是u的编码,用PHP的jsonencode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”u***”的格式。 虽然unicode编码可以在不同的页面...

ITCHN
2016/12/19
35
0
PHP JSON编码后,中文乱码的解决方式

1,有些时候,需要写接口,传递一些中文值,那么JSON编码,会出现目前以下两种情况! a.输出乱码 b.不输出乱码 使用UTF8编码的字符,使用jsonencode也出现了中文乱码。解决办法是在使用jsone...

RablePHP
2014/11/25
0
0
pager-taglib分页中文乱码原理解析

关于使用pager-taglib分页前端传递中文参数乱码问题的解决方案 1.重现问题 在web项目中有时会用到pager-taglib来作为分页的标签,如上图红色框标识所示,当我们需要把页面参数保持的时候我们...

chaun
2015/08/29
260
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
46分钟前
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
2
0
微信网页授权获取用户信息(ThinkPHP5)+ 微信发送客服消息(一)

以thinkphp5为实例,创建控制器 class Kf extends Controller { /** * [protected description]微信公众号appid * @var [type] */ protected $appid = "xxxxxxxxxxxxxxx"; /** * [protected......

半缘修道半缘君丶
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部