加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php json中文编码为null的解决办法

发布时间:2022-11-30 12:42:25 所属栏目:PHP教程 来源:
导读:  今天使用json_encode函数,发现中文竟成了null。

  原因分析:使用json_encode函数应应使用utf-8编码,我的页面用的是gbk.

  解决:在json_encode函数前使用iconv('gbk','utf8')函数
  今天使用json_encode函数,发现中文竟成了null。
 
  原因分析:使用json_encode函数应应使用utf-8编码,我的页面用的是gbk.
 
  解决:在json_encode函数前使用iconv('gbk','utf8')函数。函数
 
  function gbk2utf8($data)
  {
   if(is_array($data))
    {
      return array_map('gbk2utf8', $data);
    }
   return iconv('gbk','utf-8',$data);
  }
  //以下是找的另一种方法
 
  PHP从数据库中得到的字段是中文,想用json_encode()后返回给前台,可是json_encode对中文编码后为null。
 
  在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。
 
  这个函数的功能是将数值转换成json数据存储格式。
 
  '希亚',
       'Age'=>20
      );
  $jsonencode = json_encode($arr);
  echo $jsonencode;
  ?>
  程序运行结果如下:
 
  {"Name":null,"Age":20}
 
  json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码php编码,我认为是前端的 Javascript 也是 utf-8 的原因。
 
  iconv('gb2312','utf-8','这里是中文标题'),
   'body'=>'abcd...'
   );
  echo json_encode($array);
  ?>
  这个程序的运行结果为:
 
  {"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}
 
  数组中所有中文在json_encode之后都不见了或者出现\u2353等。
 
  解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。
 
   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--;
  }
  
  /**************************************************************
   *
   * 将数组转换为JSON字符串(兼容中文)
   * @param array $array 要转换的数组
   * @return string 转换得到的json字符串
   * @access public
   *
   *************************************************************/
  function JSON($array) {
   arrayRecursive($array, 'urlencode', true);
   $json = json_encode($array);
   return urldecode($json);
  }
  $array = array
      (
       'Name'=>'希亚',
       'Age'=>20
      );
  echo JSON($array);
  ?>
  这次成功了,运行结果如下:
 
  {"Name":"希亚","Age":"20"}
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!