用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))
我就試了是有效但沒有完全解決,後來還是出現部分數據報同樣錯誤,查看後台數據可發現插入的內容變成了下圖的類似亂碼的東西
求各路大神幫忙看看什麼原因,最好能詳細點。
貼點來源資料啊,不然怎麼測試。 。
確認一下 你這一串序列化進去的資料 有沒有問題。我之前也用serialize 但是總出問題 後來來無奈換 json_decode 了
base64_encode("a:1") == "YTox"
。那條資料是經過base64編碼的,不是亂碼。
雷雷