公司的老项目都是gbk编码的,但是新项目都是utf-8编码的。而项目之间交互涉及汉子难免就需要转码,普通字符串可以之间利用iconv来转码,数组就比较麻烦。以前的同事也写过数组转码的函数。 如下:
/**
* 对所有数据类型进行转码
*
* @param mixed $value
* 待转码变量
* @param string $inCharset
* 原编码, gbk
* @param string $outCharset
* 目标编码, utf-8
* @return mixed 转码后的数据
*/
function iconvArray($value, $inCharset = "gbk", $outCharset = "utf-8")
{
if (is_array ( $value ))
{
$ret = array ();
foreach ( $value as $key => $one )
{
$ret [$key] = iconv ( $inCharset, $outCharset, $one );
;
}
}
else
{
$ret = iconv ( $inCharset, $outCharset, $value );
}
return $ret;
}
很明显,以上函数只支持一维数组转码,对于多维就无能为力了。 以下是自己写的转码函数,不管是字符串,还是一维、多维数组都可使用。
/**
* 编码转换(可以是多维数组)
* @author shim
* @param $data 待转码变量
* @param $in_charset 原编码, gbk
* @param $out_charset 目标编码, utf-8
* @return array 转码后的数据
*/
function iconvArrayA($data, $in_charset = 'gbk', $out_charset = 'utf-8')
{
if (is_array($data))
{
foreach ($data as $key => $val)
{
$dataA[$key] = iconvArrayA($val, $in_charset, $out_charset);
}
return $dataA;
}
else
{
return iconv($in_charset, $out_charset, $data);
}
}