您当前的位置: 首页 > 网站编程 > PHP教程 > 函数json_encode对中文的处理

函数json_encode对中文的处理

作者:不详 来源:网络 发布时间: 2014-07-15 22:30 点击:
新版的PHP手册中JSON函数一节,JSON增加了两个API,json_decode(),对一个json字符串进行解码,json_encode()是生成一个json字符串。 json_encode处理中文会有几种情况一种是null空,一种是u80e5这种符号,还有一种就是正常的中文了,json_encode这个函数作用是起到不

函数json_encode对中文的处理

  新版的PHP手册中JSON函数一节,JSON增加了两个API,json_decode(),对一个json字符串进行解码,json_encode()是生成一个json字符串。

  json_encode处理中文会有几种情况一种是null空,一种是u80e5这种符号,还有一种就是正常的中文了,json_encode这个函数作用是起到不同语言之间数据传递的作用,尤其是php对js之间数据交换十分方便。

  但是json_encode这个函数在使用的时候需要注意几点:

  1 所传输的数据必须是UTF8格式的

  2 需要对中文做一些URLENCODE处理

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

  }

  这样显示出来的会是如{"item1":1,"item2":"u4e2du6587"} 格式了,虽然空解决了,但是没显示汉字呀。

  我们再来分析一下

  例如:'胥'经过json_encode处理后变为'u80e5',最终的json中中文部分被替换为unicode编码。

  我们要解决的就是将对象 转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。

  解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!

  代码如下 

  <?php

     $testJSON=array('name'=>'中文字符串','value'=>'test');

     //echo json_encode($testJSON);

     foreach ( $testJSON as $key => $value ) {

  $testJSON[$key] = urlencode ( $value );

     }

     echo urldecode ( json_encode ( $testJSON ) );

  ?>

  查看输出结果为:

  {“name”:”中文字符串”,”value”:”test”}

  到此,成功地输出了中文字符。随意使用json_encode吧。这样子在PHP后台输出的JSON字符串在前台javascript中Ajax接收后eval出来也不会出现中文乱码,因为js在处理JSON格式数据是也是以UTF8的形式进行的,与PHP类似,故接收PHP页面的JSON字符串不会出现问题。
分享到:
本文"函数json_encode对中文的处理"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4