您当前的位置: 首页 > 网站编程 > PHP教程 > php数组编码转换示例详解

php数组编码转换示例详解

作者:不详 来源:网络 发布时间: 2014-08-07 09:10 点击:
需要达到的效果是GBK数组转换成utf-8数组传给json_encode函数,下面使用详细介绍转换方法 因为一些特殊字符的显示效果的原因不得不把习惯的utf-8工程改成了GBK,由于使用了ajax技术,又涉及到了老问题编码转换。一些表单验证需要返回json数据,php的json_encode函数只支

php数组编码转换示例详解

  需要达到的效果是GBK数组转换成utf-8数组传给json_encode函数,下面使用详细介绍转换方法

  因为一些特殊字符的显示效果的原因不得不把习惯的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数组编码转换示例详解"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4