Maison  >  Article  >  php教程  >  封装php json函数支持转换gbk编码的方法

封装php json函数支持转换gbk编码的方法

WBOY
WBOYoriginal
2016-06-06 20:09:001114parcourir

有很多情况下我们会遇到项目的编码是gbk(gb2312)的情况,大家都知道php的jsonencode函数只支持utf编码,转换gbk编码会把汉字转换为null 大部分使用的办法是使用iconv函数将编码转换为utf8,但是转换成utf8后在前台页面gbk编码的情况下又会乱码,所以又得把

有很多情况下我们会遇到项目的编码是gbk(gb2312)的情况,大家都知道php的jsonencode函数只支持utf编码,转换gbk编码会把汉字转换为null

大部分使用的办法是使用iconv函数将编码转换为utf8,但是转换成utf8后在前台页面gbk编码的情况下又会乱码,所以又得把json_encode数据转换会utf8;

并在在gbk与utf8互转时遇到特殊字符还会出现各种问题;还有没有其他的办法呢? 可以让json_encode直接转换gbk编码?

方法是使用urlencode 和 urldecode ,于是将json_encode函数重新封装了下,就可以支持转换gbk编码了,代码如下:

<?php function toJson($content){
 //不支持单个文字
 if(is_string($content) ) {
 return urlencode($content);
 }
 elseif(is_array($content)){
 foreach ( $content as $key => $val ) {
 $content[$key] = toJson($val);
 }
 return urldecode(json_encode($content));
 }
 elseif(is_object($content)) {
 $vars = get_object_vars($content);
 foreach($vars as $key=>$val) {
 $content->$key = toJson($val);
 }
 return urldecode(json_encode($content));
 }
 else{
 return urldecode(json_encode($content));
 }
 }
?>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:mac下面安装php5.4Article suivant:linux php pdo mysql 扩展