首頁  >  問答  >  主體

php - 經過urldecode處理後的一段字串,被用於陣列元素中,導致json_encode無法將該陣列轉換成json字串,該如何解決?

$str = 'Success is 1% inspiration and %99 perspiration';
$urldecodeStr = urldecode($str);
$arr = [
        'doc' => $urldecodeStr
    ];
echo $urldecodeStr; //输出: Success is 1% inspiration and � perspiration
echo "<br>";
var_dump(json_encode($arr));//返回false
  1. 是什麼原因造成json_encode無法轉換的?

  2. 要讓使用了$urldecodeStr的陣列$arr能被json_encode正常編碼為json字串,有什麼方法嗎?

淡淡烟草味淡淡烟草味2704 天前582

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-05-24 11:35:54

    問題

    1.json_encode無法轉換是由於編碼問題,在$str 進行u8轉碼的時候 %99是一個亂碼。
    2.目前並不知道你得%99是什麼鬼。
    3.在你urldecode後,輸出就已經亂碼了

    解決

    1.使用iconv函數進行轉碼 $str
    2.去掉%99(當然這個看你自己)

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-24 11:35:54

    幹嘛直接urldecode沒有編碼的字串

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-24 11:35:54

    字串有問題吧。 。 。 json原則上只支援UTF-8 編碼

    回覆
    0
  • 取消回覆