雖然說php自帶了編碼轉換函數,但是在使用時會碰到字符丟失問題了,為了解決這個問題小編整理了兩上將非GBK字符集的編碼轉為GBK與將非UTF-8字符集的編碼轉為UTF-8的函數,希望能幫助到各位.
例子代碼如下:
- <?php
- /**
- * 將非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 { //開源軟件:Vevb.com
- $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;
- }
- ?>
新聞熱點
疑難解答