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

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

WBOY
WBOYOriginal
2016-06-06 20:09:001113browse

有很多情况下我们会遇到项目的编码是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));
 }
 }
?>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:mac下面安装php5.4Next article:linux php pdo mysql 扩展