php中json中文处理函数(中文显示与中文编码)

例子

 代码如下 复制代码

function encodeConvert($str,$fromCode,$toCode)
{
 if(strtoupper($toCode) == strtoupper($fromCode)) return $str;

 if(is_string($str)){
  if(function_exists('mb_convert_encoding')){
   return mb_convert_encoding($str,$toCode,$fromCode);
  }
  else{
   return iconv($fromCode,$toCode,$str);
  }
 }
 elseif(is_array($str)){   
  foreach($str as $k=>$v){    
   $str[$k] = encodeConvert($v,$fromCode,$toCode);
  }
  return $str;
 }
 return $str;

}

例子

 代码如下 复制代码

/**************************************************************
 *
 *  将数组转换为JSON字符串(兼容中文)
 *  @param  array   $array      要转换的数组
 *  @return string      转换得到的json字符串
 *  @access public
 *
 *************************************************************/
function JSON($array) {
    arrayRecursive($array, 'urlencode', true);
    $json = json_encode($array);
    return urldecode($json);
}
/**************************************************************
 *
 *  使用特定function对数组中所有元素做处理
 *  @param  string  &$array     要处理的字符串
 *  @param  string  $function   要执行的函数
 *  @return boolean $apply_to_keys_also     是否也应用到key上
 *  @access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false){
    static $recursive_counter = 0;
    if (++$recursive_counter > 1000) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $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]);
            }
        }
    }
    $recursive_counter--;
}

测试例子

 代码如下 复制代码

$arr = array ( 

  array ( 

      'catid' => '4', 

    ), 

    array ( 

      'catid' => '55', 

      'catname' => 'php教程', 

      'meta_title' => 'http://www.111cn.net', 

    ) 

); 
                                                                          
echo JSON($arr);

echo  json_encode(encodeConvert($arr,'gb2312','utf-8'));/*  */

输出结果如下

[{"catid":"4","catname":"\u4e00\u805a\u6559\u7a0b\u7f51","meta_title":"\u4e00\u805a\u6559\u7a0b\u7f512"},{"catid":"55","catname":"php\u6559\u7a0b","meta_title":"http:\/\/www.111cn.net"}] 

时间: 2024-09-20 04:45:14

php中json中文处理函数(中文显示与中文编码)的相关文章

ios-iOS中json数据转模型问题

问题描述 iOS中json数据转模型问题 小白想问下大神们下面的Json数据使用MJExtension应该怎么转成模型呢? { "status": 200, "msg": "ok", "data": { "user_id": "999998889", "user_name": "刘清扬", "is_daren": "1

目录遍历-python中的os.walk函数为什么遍历带有中文的路径时就失败?

问题描述 python中的os.walk函数为什么遍历带有中文的路径时就失败? python中的os.walk函数遍历带有中文的路径时报错如下: Traceback (most recent call last): File ""/usr/lib/python2.7/threading.py"" line 810 in__bootstrap_inner self.run() File ""Store.py"" line 79

JS文件中的中文在网页上显示为乱码解决方法

JS编码转换,这句话本身就是一句具有二重义的话.通常理解为JS文件里能转换编码的代码,但是,我所碰到的问题并不是这样的,是要解决JS文件本身的编码问题,它是UTF-8编码的还是ANSI编码的?在百度.谷歌上一搜,大家都是说通过JAVA后台处理来解决编码问题,试问,这样能解决JS文件本身的编码问题吗? 之所以提出JS文件本身编码问题,是因为JS文件的编码不同,造成了中文显示为乱码. 通常,在Eclipse中建立一个JS文件(含有中文),在Eclipse的编辑器中看到的中文都很正常,但是显示在网页上

Linux技巧--Redhat 5系统中的vim编辑器无法正常显示中文解决方案(中文显示为乱码)/Ubuntu 12.04系统gedit中文乱码

Redhat5 vim编辑器 中文乱码: 1.查看linux系统中是否已安装fonts-chinese中文语言支持包,如果没有安装,需要下载相应版本的rpm包进行安装 [root@localhost 02EXPORT_SYMBOL]# rpm -qa | grep fonts-chinese fonts-chinese-3.02-12.el5 2.修改/etc/sysconfig/i18n文件为以下内容 修改之前,记得先备份.cp /etc/sysconfig/i18n /etc/sysconf

jasperireport的SQL query中写死的中文读取出来之后显示为问号

问题描述 jasperireport的SQL query中写死的中文读取出来之后显示为问号 数据库是mysql 直接写select '中文' as lan from table1 在报表中用到$F{lan} 就会示成问号,,, 如果是select language as lan from table1 这样写的话,language字段在数据库里的值是中文,取出来能在报表中正常显示成中文,,, 这是什么问题,有大神知道吗?? 哪里的字符编码设置有问题,,, 同样的代码,在32位机子上能正常显示,

asp.net中如何编写hash函数计算中文的hash值使之生成二进制数01

问题描述 asp.net中如何编写hash函数计算中文的hash值使之生成二进制数01 asp.net中如何编写hash函数计算中文的hash值使之生成二进制数01 解决方案 产生16进制数,每一位都可以查表得到特定的4位二进制数. 解决方案二: "使之生成二进制数01"是什么意思?一般来说有中文的固定编码和hash函数就可以生成hash了 解决方案三: 给你个样子吧 using System; using System.Security.Cryptography; namespace

php-怎样让EPP中代码错误提示成中文显示?

问题描述 怎样让EPP中代码错误提示成中文显示? 怎样让EPP中代码错误提示成中文显示? 就像java中的编程工具一样代码有错误会有错误提示并且是中文提示.

SQL农历转换函数(显示中文格式,加入润月的显示)

sql农历转换函数(显示中文格式,加入润月的显示) 创建农历日期函数  if object_id('fn_getlunar') is not null     drop function fn_getlunar go create function dbo.fn_getlunar(@solarday datetime)      returns nvarchar(30)    as      begin        declare @soldata int        declare @of

解决json_encode 函数中文被编码成 null的办法

json格式在开发中用的十分广泛.在php中json_encode函数可以直接将数组转成 json格式,十分方便.但是有可能你在使用json_encode函数时,无奈的发现中文被编码成null了.原来json只支持转义utf-8编码格式的中文.php数组使用json_encode函数中文被编码成null的原因是转义gbk 或者别的编码时,中文被忽略了.一般出现在文档编码或者输出的内容编码是非UTF-8时,也就是说,GBK或者GB2312的中文,就会出现编码失败的现象. php数组使用json_e