網上的解決方案:php
1. 報錯場景:序列化字段中有中文,反序列化時有可能會出現報錯。數據庫
錯誤緣由:寫入和取出數據庫的時候,編碼不一樣,中文符號長度不一樣,序列化中的長度就沒法匹配。測試
解決辦法:適合 php 5.5+編碼
//使用正則將錯誤的長度修正,@param $str @return正確的序列化字符串字符串
preg_replace_callback('#s:(\d+):"(.*?)";#s',function($match){return 's:'.strlen($match[2]).':"'.$match[2].'";';},$str);io
測試依舊報錯,並且並無寫入庫,不符合上面報錯緣由-從庫中讀數。base64
將中文排除後再測試一次。function
2. 忽然想起來個人緣由是,由於將file讀成了base64,特別長,因此會報這個錯。 file
mark一下。序列化