JSON

运用PHP json_encode函数进行中文转换的技巧

字号+ 作者:H5之家 来源:H5之家 2015-09-30 19:21 我要评论( )

本文主要介绍用json_encode时中文无法转换的解决方案,本文假设文件所用的编码为gb2312;先写出所需的数组:?php$json=array(0=array(

  本文主要介绍用json_encode时中文无法转换的解决方案,本文假设文件所用的编码为gb2312;

  先写出所需的数组:

  <?php
  $json=array(
  0=>
  array(
  'id'=>'13',
  'name'=>'乒乓球',
  ),
  1=>
  array(
  'id'=>'17',
  'name'=>'篮球',
  )
  )
  ?>

  如果直接用PHPjson_encode函数

  <?php
  echo json_encode($json);
  ?>

  结果为:[{"id":"13","name":null},{"id":"13","name":null}]

  可以看到汉字没有被转义都为null,这是因为json仅仅转义encoding编码(类似于:%B0%AE),故上面语句应该先转换编码:

  <?php
  foreach($ajaxas$key=>$val){
  $ajax[$key]['name']=urlencode($val['name']);
  }
  echo json_encode($json);
  ?>

  客户端js代码:

  <scripttype="text/javascript">
  functiongetsort(obj){
  $.ajax({
  type:"GET",
  baseUrl;?>/index/getajax">url:"<?=$this->baseUrl;?>/index/getajax",
  data:"c="obj.value,
  success:function(json){
  varjson=eval(json);
  varhtml='<select>';
  $.each(json,function(k){
  html='<optionvalue="'+json[k]['id']+'">'+decodeURI(json[k]['name'])+'</option>';
  });
  html="</select>";
  $('#sort').html(html);
  }
  })
  }
  </script>

  用上面的代码js会报错说编码不符合标准

  原因是因为js中decodeURI仅支持utf-8转码。所以PHPjson_encode函数的代码应该为下面的代码:

  <?php
  foreach($ajaxas$key=>$val){
  $ajax[$key]['name']=urlencode(iconv('gb2312','utf-8',$val['name']));//iconv扩展函数库默认没有安装,需要安装它才能使用
  }
  echojson_encode($json);
  ?>

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  • 浅谈使用PHP开发微信支付的流程

    浅谈使用PHP开发微信支付的流程

    2016-02-13 15:00

  • php json时间格式转换

    php json时间格式转换

    2016-02-08 11:48

  • json 在线转换php

    json 在线转换php

    2016-02-05 16:00

网友点评