搜尋

首頁  >  問答  >  主體

php - 反序列化報錯,後台資料變成疑似亂碼?

用serialize()序列化資料後插入資料庫,再用unserialize()反序列化出來的時候遇到了部分資料字串報錯;
報錯內容為:unserialize() [function.unserialize]: Error at offset 0 of 2544 bytes

谷歌搜尋了很多解決方法都是說用是由於編碼的問題導致的
於是在插入的地方改為base64_encode(serialize($str));
讀取的地方改為
unserialize(preg_replace('! s:(d+):"(.*?)";!se', '"s:".strlen("$2").":"$2";"', $string))

我就試了是有效但沒有完全解決,後來還是出現部分數據報同樣錯誤,查看後台數據可發現插入的內容變成了下圖的類似亂碼的東西

求各路大神幫忙看看什麼原因,最好能詳細點。

phpcn_u1582phpcn_u15822772 天前862

全部回覆(4)我來回復

  • PHPz

    PHPz2017-05-16 13:10:00

    貼點來源資料啊,不然怎麼測試。 。

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 13:10:00

    確認一下 你這一串序列化進去的資料 有沒有問題。我之前也用serialize 但是總出問題 後來來無奈換 json_decode 了

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:10:00

    base64_encode("a:1") == "YTox"

    那條資料是經過base64編碼的,不是亂碼。

    回覆
    0
  • 怪我咯

    怪我咯2017-05-16 13:10:00

    雷雷

    回覆
    0
  • 取消回覆