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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM