1. 程式人生 > >使用json_encode引數為GBK型別的中文

使用json_encode引數為GBK型別的中文

json_encode引數為GBK型別的中文

由於json_encode函式自身的限制,無法支援GBK型別的中文,所有在編碼含有GBK編碼型別的中文結果會是null

最初碰到了這個問題,磕磕絆絆了很久找到了解決的方案

希望讀者能通過本博文解決問題

方案一、將陣列中所有的中文部分進行轉碼

方案原理:當你想對一個含有GBK編碼的中文陣列進行json_encode時,迴圈進行對陣列進行轉碼,程式碼原理:

foreach($arr as $k=>$v)
{
    $arr[$k] = mb_convert_encoding($v, "UTF-8", "GBK");
}

當然具體情況需要視具體情況進行修改

方案二、將陣列先進行urlencode再進行json_encode、urldecode返回

方案原理:利用遞迴的思想將陣列進行urlencode,然後再進行json_encode,之後再urldecode返回,程式碼原理:

$res	= changeArr($arr);
function changeArr($arr)
{
    foreach($arr as $k=>$v)
    {
        if (is_arrary($v))
        {
            $arr[$k] = changeArr($v);
        } else
{ $arr[$k] = urlencode($v); } } return $arr; }

以上的兩種形式都可以解決大部分的json_encode無法編碼GBK型別的中文,個人經驗有限,不敢說碰到了所有的這方面的問題,但所碰到的都可以用以上的兩種形式解決

若以上內容有失誤的地方請指出,以免誤導他人,謝謝!