關於json_encode中文亂碼問題的解決方式

第一種:json

    這種簡單的作一個代碼轉換,urlcode以後再返回所需數組
數組

    我代碼這樣就足夠了。
app

    public static function encodeOperations ($array)函數

    {測試

        foreach ((array)$array as $key => $value) {編碼

            if (is_array($value)) {url

                encodeOperations($array[$key]);spa

            } else {.net

                $array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));code

            }

        }

return $array;

    }

第二種:

這種是在網上看到的,而後就是有評論說出現無限循環的問題,可是這顯然很全面的,而後我測試以後也確實有,貼這裏僅供參考

     /**************************************************************

       *

       *    使用特定function對數組中全部元素作處理

       *    @param  string  &$array     要處理的字符串

       *    @param  string  $tocode     編碼後

       *    @param  string  $oldcode    編碼前

       *    @param  string  $function   要執行的函數

       *    @return boolean $apply_to_keys_also     是否也應用到key上

       *    @return array   $array      是否也應用到key上

       *    @access public

       *

     *************************************************************/

    function encodeOperations (&$array, $function, $tocode=false,$oldcode=false,$apply_to_keys_also = false)

    {

        foreach ($array as $key => $value) {

            if (is_array($value)) {

                encodeOperations($array[$key], $function, $apply_to_keys_also);

            } else {

if($tocode&&$oldcode) {

if(function_exists(mb_convert_encoding)) {

$value = mb_convert_encoding($value,$tocode,$oldcode);

}else{

return "error";

}

}

                $array[$key] = $function($value);

            }

     

            if ($apply_to_keys_also && is_string($key)) {

                $new_key = $function($key);

                if ($new_key != $key) {

                    $array[$new_key] = $array[$key];

                    unset($array[$key]);

                }

            }

        }

return $array;

    }

     

    /**************************************************************

     *

     *    將數組轉換爲JSON字符串(兼容中文)

     *    @param  array   $array      要轉換的數組

     *    @return string      轉換獲得的json字符串

     *    @access public

     *

     *************************************************************/

    function JSON($array) {

        arrayRecursive($array, 'urlencode', true);

        $json = json_encode($array);

        return urldecode($json);

    }

相關文章
相關標籤/搜索