当前位置:  编程技术>php

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

    来源: 互联网  发布时间:2014-08-26

    本文导语:  php5.2新增的json功能是非常受欢迎的,但是经过测试发现, json_encode对中文的处理是有问题的, 1.不能处理GB编码,所有的GB编码都会替换成空字符. 2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果. 代...

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);//任意编码下都正常显示
********/

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php5中当浏览器禁用cookie时保持会话session的方法
  • PHP5的CMS框架 Kajona
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • PHP5 Web开发框架 Probus
  • PHP5的AJAX开发包 AJASON
  • PHP5的MVC框架 TMPHP
  • PHP5的MVC框架 Agavi
  • PHP5的SVG开发包 SVGGraph
  • 在REDHAT 8.0下安装PHP5的问题
  • PHP5调试工具 debugConsole
  • PHP5 重构工具 Rephactor
  • PHP5开发框架 PRADOTM
  • PHP5框架 KissPHP
  • PHP5框架 Linx
  • php5框架 Rong Framework
  • PHP5的ORM框架 dORM
  • PHP5的ORM框架 SQLReactor
  • PHP5框架 nette
  • Resin的PHP5引擎 Quercus
  • 微型 PHP5 框架 Slim Framework
  • 安装php5碰到的怪问题,急~~~~~


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3