php - 反序列化报错,后台数据变成疑似乱码?

 天高云淡-tgyd 发布于 2022-11-28 02:13

用serialize()序列化数据后插入数据库,再用unserialize()反序列化出来的时候遇到了部分数据字符串报错;
报错内容为:unserialize()[function.unserialize]:Erroratoffset0of2544bytes

谷歌搜了好多解决方法都是说用是由于编码的问题导致的
于是在插入的地方改为base64_encode(serialize($str));
读取的地方改为
unserialize(preg_replace('!s:(d+):"(.*?)";!se','"s:".strlen("$2").":"$2";"',$string))

我就试了是有效但没有完全解决,后来还是出现部分数据报同样错误,查看后台数据可发现插入的内容变成了下图的类似乱码的东西

求各路大神帮忙看看什么原因,最好能详细点。

4 个回答
  • 贴点源数据啊,不然怎么测试。。

    2022-11-28 04:35 回答
  • 确认一下你这一串序列化进去的数据有没有问题。我之前也用serialize但是总出问题后来来无奈换json_decode了

    2022-11-28 04:35 回答
  • base64_encode("a:1")=="YTox"

    那条数据是经过base64编码的,不是乱码。

    2022-11-28 04:35 回答
  • unserialize(base64_decode($str))
    2022-11-28 04:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有