php5.2 Json不能正确处理中文、GB编码的解决方法

 更新时间:2014年03月28日 17:49:27   作者:  
json_encode对中文的处理是有问题,不能处理GB编码,所有的GB编码都会替换成空字符,下面有个不错的解决方法,大家可以参考下
php5.2新增的json功能是非常受欢迎的,但是经过测试发现,
json_encode对中文的处理是有问题的,
1.不能处理GB编码,所有的GB编码都会替换成空字符.
2.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);
/**这样可以正确处理utf8编码的中文了。

PS:对于GB编码的中文,我们可以在编码时先转成UTF8编码,再进行编码,解码的时候再进行一个utf8 -> gb的转换就可以了。
另外一般json_encode的结果我们是返回到客户端来使用,我们其实还可以用javascript的unescape函数来对unicode编码的中文进行解码,从而还原成正确的中文。

或者用:$title = mb_convert_encoding($title, 'HTML-ENTITIES', $this->_outCharset);//任意编码下都正常显示
********/

相关文章

  • PHP 引用文件技巧

    PHP 引用文件技巧

    最近在学PHP,习惯性的喜欢把它与.NET作些比较,发现其中一个不同就是对其他文件中对象的引用问题。
    2010-03-03
  • php基于表单密码验证与HTTP验证用法实例

    php基于表单密码验证与HTTP验证用法实例

    这篇文章主要介绍了php基于表单密码验证与HTTP验证用法,以实例形式较为详细的分析了表单密码验证与HTTP验证的原理与相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • php 无限极分类

    php 无限极分类

    至于添加删除之类的功能我就不多写了!仔细看看就知道这么用了. 难的是显示方面 希望高手扩展一下! 这是类
    2008-03-03
  • PHP英文字母大小写转换函数小结

    PHP英文字母大小写转换函数小结

    这篇文章主要介绍了几个PHP英文字母大小写转换函数,分为首字母大小写转换和所有字母大小写转换,需要的朋友可以参考下
    2014-05-05
  • PHP模拟asp中response类实现方法

    PHP模拟asp中response类实现方法

    这篇文章主要介绍了PHP模拟asp中response类的方法,可实现模拟ASP中response类处理客户端响应的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • php数组相加 array(“a”)+array(“b”)结果还是array(“a”)

    php数组相加 array(“a”)+array(“b”)结果还是array(“a”)

    同一个数组里面如果有相同的键名,则前面一个键名的值将会被覆盖(overwritten)
    2012-09-09
  • php下的原生ajax请求用法实例分析

    php下的原生ajax请求用法实例分析

    这篇文章主要介绍了php下的原生ajax请求用法,结合实例形式分析了前台原生ajax请求与后台PHP响应相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • Yii2中简单的场景使用介绍

    Yii2中简单的场景使用介绍

    这篇文章主要给大家介绍了关于Yii2中简单的场景使用的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起学习学习吧。
    2017-06-06
  • PHP实现简单实用的分页类代码

    PHP实现简单实用的分页类代码

    这篇文章主要介绍了PHP实现简单实用的分页类代码,结合实例形式分析了PHP分页类的定义与使用技巧,非常简单实用,需要的朋友可以参考下
    2016-04-04
  • 实现php删除链表中重复的结点

    实现php删除链表中重复的结点

    在本篇文章中,我们给大家带来了关于php删除链表中重复的结点的相关知识点内容以及相关代码,有兴趣的朋友们参考下。
    2018-09-09

最新评论