PHP5.2 新增的 json 功能是非常受欢迎的,但是经过测试发现,json_encode

对中文的处理是有问题的:

不能处理GB编码,所有的GB编码都会替换成空字符;

utf8编码的中文被编码成unicode编码,相当于javascript的escape函数

处理的结果。

为了能正确使用json,首先我们就应该在编码上采用utf8编码,然后再对

json_encode的返回结果稍加处理就可以得到正确的结果了。
​1. [代码]php代码    
<?php
/*PHP5.2 新增的 json 功能是非常受欢迎的,但是经过测试发现,json_encode
 
对中文的处理是有问题的:
 
    不能处理GB编码,所有的GB编码都会替换成空字符;
 
    utf8编码的中文被编码成unicode编码,相当于javascript的escape函数
 
处理的结果。
 
    为了能正确使用json,首先我们就应该在编码上采用utf8编码,然后再对
 
json_encode的返回结果稍加处理就可以得到正确的结果了。
 
    有一个简单的类,将这两个函数包装了一下:*/
 
    class Json
 
    {
 
     public static function encode($str)
 
     {
 
      $code = json_encode($str);
 
      return preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 
 
'UTF-8', pack('H4', '\\1'))", $code);
 
     }
 
     public static function decode($str)
 
     {
 
      return json_decode($str);
 
     }
 
    }
 
/*    使用的时候
 
    Json::encode($code);
 
    Json::decode($code);
 http://www.bizhizu.cn/shouhui/​
    这样可以正确处理utf8编码的中文了。
 手绘图片
    PS:对于GB编码的中文,我们可以在编码时先转成UTF8编码,再进行编码
 
,解码的时候再进行一个utf8 -> gb的转换就可以了。
 
    另外一般json_encode的结果我们是返回到客户端来使用,我们其实还可
 
以用javascript的unescape函数来对unicode编码的中文进行解码,从而还原
 
成正确的中文。
 
    或者用:
 
    $title = mb_convert_encoding($title, 'HTML-ENTITIES', $this-
 
>_outCharset);*/
 
    //任意编码下都正常显示
?>

PHP Json函数不能处理中文的解决办法的更多相关文章

  1. 使用httpclient post请求中文乱码解决办法

    使用httpclient post请求中文乱码解决办法   在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码 ...

  2. [Linux] - CentOS中文乱码解决办法

    CentOS 7 终端中文乱码解决办法: 1.使用vim编辑locale.config文件: vim /etc/locale.conf 2.将LANG="en_US.UTF-8"修 ...

  3. Oracle导入中文乱码解决办法

    Oracle导入中文乱码解决办法 一.确保各个客户端字符集的编码同服务器字符集编码一致 1-       确定sqlplus字符集编码,如果是windows设置环境变量. 2-       确保Sec ...

  4. NetBeans中文乱码解决办法

    一.Windows下NetBeans中文乱码解决办法 找到你的Netbeans安装目录下的etc文件夹,用记事本打开netbeans.conf,找到netbeans_default_options(不 ...

  5. centos7.2中文乱码解决办法

    centos7.2 中文乱码解决办法 1.查看安装中文包: 查看系统是否安装中文语言包 (列出所有可用的公共语言环境的名称,包含有zh_CN) # locale -a |grep "zh_C ...

  6. windows下git bash中文乱码解决办法

    一.解决办法1:(直接上图) 1.在git bash下,右键 出现下图,选择options: 2.选择“Text” 3.将“Character set”设置为  UTF-8 转:windows下git ...

  7. mac中matplotlib不支持中文的解决办法

    参考:https://blog.csdn.net/kaizei_pao/article/details/80795377 首先查看matplotlib已加载的字体: import matplotlib ...

  8. Map 转 json格式 保留null值的解决办法

    Map 转 json格式 保留null值的解决办法 开发中遇到将map数据转json格式,然后map中含null值的键值对都被转没了,所以记录一下,以下是解决方法 使用fastJson进行转换 imp ...

  9. Ajax在IE浏览器会出现中文乱码解决办法

    在AJAX浏览器来进行发送数据时,一般它所默认的都是UTF-8的编码. Ajax在IE浏览器会出现中文乱码的情况!解决办法如下 <script type="text/javascrip ...

随机推荐

  1. SQLServer 跟踪 扩展事件(Extended Events) 专家

    http://blog.csdn.net/kk185800961/article/details/49725903

  2. Android自定义控件之基本原理(一)

    前言: 在日常的Android开发中会经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件,今天先大致了解一下自定义控件的要求和实现的基本原理. 自 ...

  3. Dance In Heap(二):一些堆利用的方法(上)

    0×00 前面的话 在前面的文章里我们稍微有点啰嗦的讲解了堆中的一些细节,包括malloc.free的详细过程,以及一些检查保护机制,那在这篇文章里,我们就开始结合这些机制,以64位为例来看一看如何对 ...

  4. 【转载】GitHub中国区前100名到底是什么样的人

    转载了这篇文章: http://www.jianshu.com/p/d29cba7934c9 这篇文章真是太牛了!转载过来涨涨见识,同时好好励志一把.还有,ruanyifeng怎么长那样... 哈 另 ...

  5. 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现

    权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现 import java.math.BigInteger; import java.util.ArrayLi ...

  6. 千呼万唤始出来:ArchLinux for Espressobin

    前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的链接.图片显示,请访问我的博客原文: http://www.cnblog ...

  7. 树莓派 Zero作为飞控图传

    前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的链接.图片显示,请访问我的博客原文: http://www.cnblog ...

  8. Android自己定义控件

    今天我们来讲一下 Android中自己定义控件的介绍,在Android中, 我们一般写xml都是用的是单个的控件来完毕的 ,但是.往往在一些项目中.单个控件有时是满足不了的.故此我们能够自己定义控件 ...

  9. matplotlib简易新手教程及动画

    做数据分析,首先是要熟悉和理解数据.所以掌握一个趁手的可视化工具是很重要的,否则对数据连个主要的感性认识都没有,怎样进行下一步的design 点击打开链接 还有一个非常棒的资料  Matplotlib ...

  10. 音频单元组件服务参考(Audio Unit Component Services Reference)

    目录 了解Audio Unit体系结构 文档结构预览 结构单元介绍 本文主要介绍AudioUnit的组成 本文由自己理解而成,如有错误,请欢迎网友们指出校正. 了解Audio Unit体系结构 开始前 ...