gbk和utf8的json转化

    /**
     * 将gbk编码转为utf8再json化
     * @param $value
     * @param int $options
     * @return false|string
     */
    static function tb_json_encode($value, $options = 0)
    {
        return json_encode(self::tb_json_convert_encoding($value, ‘GBK‘, ‘UTF - 8‘));
    }

    /**
     * 反json化后,再将utf8编码转为gbk
     * @param $str
     * @param bool $assoc
     * @param int $depth
     * @return false|string
     */
    static function tb_json_decode($str, $assoc = false, $depth = 512)
    {
        return self::tb_json_convert_encoding(json_decode($str, $assoc), ‘UTF-8‘, ‘GBK‘);
    }

    static function tb_json_convert_encoding($m, $from, $to)
    {
        switch (gettype($m)) {
            case ‘integer‘:
            case ‘boolean‘:
            case ‘float‘:
            case ‘double‘:
            case ‘NULL‘:
                return $m;

            case ‘string‘:
                return iconv(‘gbk‘, ‘utf-8‘, $m);;
            case ‘object‘:
                $vars = array_keys(get_object_vars($m));
                foreach ($vars as $key) {
                    $m->$key = self::tb_json_convert_encoding($m->$key, $from, $to);
                }
                return $m;
            case ‘array‘:
                foreach ($m as $k => $v) {
                    $m[self::tb_json_convert_encoding($k, $from, $to)] = self::tb_json_convert_encoding($v, $from, $to);
                }
                return $m;
            default:
        }
        return $m;
    }

原文地址:https://www.cnblogs.com/two-bees/p/12055758.html

时间: 2024-10-23 21:30:31

gbk和utf8的json转化的相关文章

Java GBK,UTF-8编码

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/41366301 1.GBK,UTF-8编码 注意:一般默认的是GBK编码. package io.dol.sn; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class EnCodeStream { public st

告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现(转)

效果图 字符 字符是早于计算机而存在,从人类有文明那时起,人们就用一个个符号代表世间万象.如ABC,如“一.二.三”. 字符集 字符集是所有字符的集合. XXX字符集 给字符集中的每一个字符套上一个序号后的字符集.常见的XXX字符集有ASCLL字符集.Unicode字符集等等,不同种字符集为每个字符编的序号不同,包含的字符数量也不同. GBK.UTF-8 GBK.UTF-8是一种编码编码格式.当然,你也可以说unicode是一种编码格式,因为它的的确确为每个字符编了一个码,没错,可是unicod

字符编码GB2312、GBK、UTF-8的区别

本文来自:javaeye网站 UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛 GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大~ 提示:如果您的网站客户群体主要是面向国内用户的,建议使用GBK版本,因为它可以节省空间,及相对utf-8版本来讲稳定一些.对于DZ论坛来说,很多插件都只支持GBK的,如果需要装较多插件的论坛还是用GBK比较好,而对装较少插件且有特殊用户群的论坛用UTF8比较好. GBK版本与UTF-8版本功能是一样的.只不过编码方式不同. GBK的

gbk转utf-8 iconv 编码转换

linux下面有时候 字符需要进行编码转换(爬虫将gbk转为utf-8编码...),一般可以选择iconv函数. 终端下面  输入 man 3 iconv 得到  iconv函数的使用方法. 个人看习惯了,msdn文档之后感觉linux下面的文档的看的不是那么爽了. 使用iconv函数进行转码,一般使用三个函数:iconv_open  . iconv  .iconv_close三个函数. iconv_t iconv_open(const char* tocode,const char* from

Python Solve UnicodeEncodeError 'gbk' / 'ascii' / 'utf8' codec can't encode character '\x??' in position ? 解决有关Python编码的错误

在Python中,处理中文字符一直是很令人头痛的问题,一言不合就乱码,而且引起乱码的原因也不尽相同,有时候是python本身默认的编码器设置的不对,有时候是使用的IDE的解码器不对,还有的时候是终端terminal的解码器不对,有时候同一份代码在Python2上正常运行,Python3上就不行了,反正产生乱码的原因很多,这里就列举一些博主遇到过的一些错误及其解决方案: Error 1: UnicodeEncodeError: 'gbk' codec can't encode character

gbk与utf-8转换

linux: 1 #include <iconv.h> 2 3 int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen) 4 { 5 iconv_t cd; 6 int rc; 7 char **pin = &inbuf; 8 char **pout = &outbuf; 9 10 cd = iconv_open(to_charset,f

字符集GBK升级UTF8

在生产环境中,数据库字符集因为各种原因需要升级,比如为了支持汉字,从latin1字符集升级到GBK,后面为了支持多个语言文字,需要将GBK升级到UTF8等.迁移过程网上有很多,我今天主要想讲下字符集转换后,可能对业务产生的影响,我以GBK转换到UTF8为例说明.主要有两点: 汉字在GBK编码中占2个字节,在UTF8编码中占3个字节,而mysql的索引要求总长度不超过767个字节,因此索引字符数会被缩短(383->255),特别的,对于唯一索引,要求索引字段长度小于256个字符. 编码转换后,导致

JSON转化为对象

之前写过对象转化为JSON,http://www.cnblogs.com/loger1995/p/6613488.html 现在来写写JSON转化为对象的方法,以及需要注意的地方! 导包: 这些包通过百度关键字:JSONObject所必须的6个包 即可找到! 新建一个测试类: package com.loger.test; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.lo

Java 中文字符串编码之GBK转UTF-8

写过两篇关于编码的文章了,以为自己比较了解编码了呢?! 结果今天又结结实实的上了一课. 以前转来转去解决的问题终归还是简单的情形.即iso-8859-1转utf-8,或者iso-8859-1转gbk,gb2312之类.这种无损转换,一行代码就搞定. 今天遇到了gbk转utf-8.无论怎么转,都是乱码. 一.乱码的原因 gbk的中文编码是一个汉字用[2]个字节表示,例如汉字"内部"的gbk编码16进制的显示为c4 da b2 bf utf-8的中文编码是一个汉字用[3]个字节表示,例如汉