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. NLP项目

    GitHub NLP项目:自然语言处理项目的相关干货整理 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.本文作者为自然语言处理NLP初学者整理了 ...

  2. Java过滤HTML标签工具类

    过滤HTML标签能有效的放置XSS攻击. 封装: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springf ...

  3. Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

  4. 【每日Scrum】第五天(4.15) TD学生助手Sprint1站立会议

    TD学生助手Sprint1站立会议(4.15) 任务看板 站立会议内容 组员 昨天 今天 困难 签到 刘铸辉 (组长) 今天和静姐,娇哥把图片3D画廊效果的功能实现了,GPS功能没什么进展,所以只能继 ...

  5. MyEclipse的html/JSP编辑器添加代码自动提示

    http://lusterfly.iteye.com/blog/1872627 在myeclipse 9以前的版本中,我们如果要为html编辑器添加自动的代码提示可以这样操作: windows--&g ...

  6. Android调用JNI本地方法经过有点改变

    方法注册好后要经过哪些路 Android一个异常捕获项目 https://github.com/xroche/coffeecatch coffeecatch CoffeeCatch, a tiny n ...

  7. JSP 随记

    jstl <c:forEach> 遍历,多个<option>时显示"全部".单个 option时,默认选中! 引入:<%@ taglib prefix ...

  8. nodejs-runoob

    是否安装成功nodejs - node -v 是否安装成功npm - npm -v

  9. 关于移动端文字无法垂直居中(或line-height不起作用)的问题的解决方案(网摘)

    最近开发移动端APP,发现安卓端对于文字垂直居中的问题兼容性不好,网上也搜了很多方法,但是都比较麻烦,自己摸索出来了最终的解决方案: 1.首先在html头部把我们常用的lang="en&qu ...

  10. JavaScript+Json写的二级联动

    省市区的联动,相当常见 我就不写这么大数据的了,先写个简单的试一试 <!DOCTYPE html> <html> <head> <title></ ...