虽然说php自带了编码转换函数,但是在使用时会碰到字符丢失问题了,为了解决这个问题小编整理了两上将非GBK字符集的编码转为GBK与将非UTF-8字符集的编码转为UTF-8的函数,希望能帮助到各位
例子。
代码如下 | 复制代码 |
/** * 将非GBK字符集的编码转为GBK * * @param mixed $mixed 源数据 * * @return mixed GBK格式数据 */ function charsetToGBK($mixed) { if (is_array($mixed)) { foreach ($mixed as $k => $v) { if (is_array($v)) { $mixed[$k] = charsetToGBK($v); } else { $encode = mb_detect_encoding()($v, array('ASCII', 'UTF-8', 'GB2312', 'GBK', 'BIG5')); if ($encode == 'UTF-8') { $mixed[$k] = iconv('UTF-8', 'GBK', $v); } } } } else { $encode = mb_detect_encoding($mixed, array('ASCII', 'UTF-8', 'GB2312', 'GBK', 'BIG5')); //var_dump($encode); if ($encode == 'UTF-8') { $mixed = iconv('UTF-8', 'GBK', $mixed); } } return $mixed; } /** * 将非UTF-8字符集的编码转为UTF-8 * * @param mixed $mixed 源数据 * * @return mixed utf-8格式数据 */ function charsetToUTF8($mixed) { if (is_array($mixed)) { foreach ($mixed as $k => $v) { if (is_array($v)) { $mixed[$k] = charsetToUTF8($v); } else { $encode = mb_detect_encoding($v, array('ASCII', 'UTF-8', 'GB2312', 'GBK', 'BIG5')); if ($encode == 'EUC-CN') { $mixed[$k] = iconv('GBK', 'UTF-8', $v); } } } } else { $encode = mb_detect_encoding($mixed, array('ASCII', 'UTF-8', 'GB2312', 'GBK', 'BIG5')); if ($encode == 'EUC-CN') { $mixed = iconv('GBK', 'UTF-8', $mixed); } } return $mixed; } ?> |