一、利用var_export(), eval()方法
/** * 将含有GBK的中文数组转为utf-8 * * @param array $arr 数组 * @param string $in_charset 原字符串编码 * @param string $out_charset 输出的字符串编码 * @return array */ function array_iconv($arr, $in_charset="gbk", $out_charset="utf-8") { $ret = eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';')); return $ret; // 这里转码之后可以输出json // return json_encode($ret); }
原理很简单 var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?),至此完美解决问题。
eval() 函数小结:
条件:eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
$a ="hello"; $res = eval("return $a;"); print_r($res); // 在赋值时必须用反斜杠对$标示符进行转义 eval("\$str = \"$str\";"); echo $str;
二、利用递归将数组转码
/** * UTF-8编码 GBK编码相互转换/(支持数组) * * @param array $str 字符串,支持数组传递 * @param string $in_charset 原字符串编码 * @param string $out_charset 输出的字符串编码 * @return array */ function array_iconv($str, $in_charset="gbk", $out_charset="utf-8") { if(is_array($str)) { foreach($str as $k => $v) { $str[$k] = array_iconv($v); } return $str; } else { if(is_string($str)) { // return iconv('UTF-8', 'GBK//IGNORE', $str); return mb_convert_encoding($str, $out_charset, $in_charset); } else { return $str; } } }
总结
PHP将数组编码gbk和utf-8相互转换的内容到这就基本结束了,文章介绍的很详细,具有一定的参考价值,希望这篇文章对大家的学习和工作能带来一定的帮助。
本文向大家介绍php变量与数组相互转换的方法(extract与compact),包括了php变量与数组相互转换的方法(extract与compact)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php变量与数组相互转换的方法。分享给大家供大家参考,具体如下: 在php中数组与变量相互转换我们可使用到extract或compact函数,这里就来给大家分析一下这两个函数的用法。 compa
本文向大家介绍php对象和数组相互转换的方法,包括了php对象和数组相互转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php对象和数组相互转换的方法。分享给大家供大家参考。具体分析如下: 这里定义2个php匿名对象和数组相互转换的函数,代码如下: 用法示例如下: 希望本文所述对大家的php程序设计有所帮助。
本文向大家介绍js数组与字符串的相互转换方法,包括了js数组与字符串的相互转换方法的使用技巧和注意事项,需要的朋友参考一下 熟悉js的朋友很多都遇到过js的数组与字符串相互转换的情况,本文就此作一简单介绍,示例如下: 一、数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: 二、字符串转数组 实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:
本文向大家介绍Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码,包括了Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码的使用技巧和注意事项,需要的朋友参考一下 首先是网上大神给的类 然后是我经过2次封装的类,注释很清楚,拿过去直接用就行 以上所述是小编给大家介绍的Java Base64位
本文向大家介绍php中实现xml与mysql数据相互转换的方法,包括了php中实现xml与mysql数据相互转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php中实现xml与mysql数据相互转换的方法。分享给大家供大家参考。具体分析如下: 这里提供了一个mysql2xml转换类,可以快速的把xml转换成mysql同时反之也可以把mysql转换成xml,下面看代码. mysql
本文向大家介绍Python 十六进制整数与ASCii编码字符串相互转换方法,包括了Python 十六进制整数与ASCii编码字符串相互转换方法的使用技巧和注意事项,需要的朋友参考一下 在使用Pyserial与STM32进行通讯时,遇到了需要将十六进制整数以Ascii码编码的字符串进行发送并且将接收到的Ascii码编码的字符串转换成十六进制整型的问题。查阅网上的资料后,均没有符合要求的,遂结合各家之