Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php数组编码转换小例子

php数组编码转换小例子

发布时间:2018-02-21   编辑:www.jquerycn.cn
本文介绍了php数组编码转换的一个例子,将GBK数组转换成utf-8数组传给json_encode函数,有需要的朋友参考下本文提供的转换方法。

在php编程中,由于特殊字符的原因,需要将utf-8工程改成了GBK,由于使用了ajax技术,又涉及到了老问题——编码转换。
一些表单验证需要返回json数据,php的json_encode函数只支持utf-8编码,无奈只得iconv了,需要达到的效果是GBK数组转换成utf-8数组传给json_encode函数。

最初想到的方法,将数组序列化后用iconv函数转换编码,之后再反序列化:
unserialize(iconv('gbk','utf-8',serialize($array))); 
得到的结果是空白,后来想起来配置文件里设置了默认编码 ini_set('default_charset', 'gbk');   这样用gbk反序列化utf-8的字符串肯定不好用了,此处在序列化和反序列化之间加个ini_set('default_charset', 'utf-8'); 应该也是可以的,但这么弄总觉得有点别扭,因为是全局的编码设置,很容易导致其他地方的编码问题,比如数据库操作。

换个思路,用构建数组原型的序列化方法,借助var_export函数:
 

复制代码 代码示例:
function array_iconv($in_charset,$out_charset,$arr){ 
        return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';')); 
}

原理分析:
var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?),至此完美解决问题。

后续:网上找到的方法,大多是利用递归调用iconv的方式,如果数组元素过多或者维数多一些,性能上肯定不怎么样了,更好的是原生代码的方式,不需要考虑是N维数组还是关联数组,一切都已经自动完成,保证数组转换前后数据一致。

从代码的长短以及循环和原生方法的比较上,还是本文的方法不错哦。

您可能感兴趣的文章:
PHP 数组字符集编码转换的函数
php数组编码转换小例子
php mb_convert_encoding文字编码转换函数
php字符串编码转换小例子
php字符串编码转换函数 可以自动识别原编码
php url编码与解码(加密/解密)
PHP汉字拼音转换、公历农历转换的实例详解
php数组编码的转换方式的例子
学习php字符串编码的转换与判断
设置php页面编码的二种方法

关键词: php编码  编码转换   
[关闭]