关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。

首先我们分析一下为什么会出现这个错误:

编码问题

UTF-8:

ANSI:

我发现在我的机器上边编码改动只是影响了汉字的显示,对Object序列化和反序列化并没有影响,但是网络上有介绍说是因为编码的问题,这个要看大家具体的问题了。

解决办法,既然在serialize时没有问题,那么我们就主要考虑是否是unserialize的时候出现了问题,我采取的措施如下:

对要反序列化的数据进行一次转换,究竟转换这个函数是网络上找的,暂时不会写!

那么既然要转换一个反序列化的对象,我们就要利用到mysqldb.class.php(例子),在mysqldb.class.php中添加如下方法:

好的,完成这一步,就需要我们对unserialize.php反序列化读取数据进行一些修改。

就像老师讲的那样,我们首先载入

接下来我把,那个需要转换的字符串进行了一次初始化,为什么,如果不初始化,会提示

因为我们unserialize.php这个页面内没有$out这个变量的原因。

接下来

这样我们才可以看到和老师课上演示一样的效果,至于link的问题这里暂时不做讨论,因为凌晨2点了,我想睡觉了

下边是我serialize.php和unserialize.php2个页面的代码供大家参考。

亲奈的同学们,我只是分享一下我复习当中遇到的问题,请不要喷我。

我是小白,还没有资格装X,拿出来我的一点想法和大家分享。

喜欢的可以看下,不喜欢的肯定是我写的不够好。分享快乐。

谢谢大家。

代码贴在下面

向同学们

 

 

致敬

 

 

 

 

Error at offset之反序列化的更多相关文章

  1. thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决

    thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决 一.总结 一句话总结:清缓存就好了,所以框架有问题可以考虑清缓存 清缓存 ...

  2. unserialize() [function.unserialize]: Error at offset

    $a = 'a:1:{i:0;s:12:"1,10,93,";}'; var_dump( unserialize( $a ) ); 运行之后页面上显示Notice: unseria ...

  3. [php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法

    使用unserialize函数将数据储存到数据库的时候遇到了这个报错, 后来发现是将gb2312转换成utf-8格式之后, 每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问 ...

  4. PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法

    使用unserialize函数将数据储存到数据库的时候遇到了这个报错,后来发现是将gb2312转换成utf-8格式之后,每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题, ...

  5. [yii\queue\Queue] [10] unknown job (attempt: 1, PID: 31167) is finished with error: yii\base\ErrorException: unserialize(): Error at offset 1922 of 65535 bytes

    网上的解决方案: 1. 报错场景:序列化字段中有中文,反序列化时有可能会出现报错. 错误原因:写入和取出数据库的时候,编码不同,中文符号长度不同,序列化中的长度就无法匹配. 解决办法:适合 php 5 ...

  6. unserialize():Error at offset 0 of 96 bytes是什么意思

    数据库有个列是数组序列化后存到数据库的,取出来得反序列化, php想要把数组保存到数据库里,有两种序列化方式,分别是: //php系统序列化 $b = serialize($a);    //序列化数 ...

  7. PHP出现Notice: unserialize() [function.unserialize]: Error at offset问题的解决方案

    有两个原因(据我所知)会导致这个问题: (1) 字符串本身的问题 (2)字符编码的问题. 你unserialize的字符串的编码和文件本身的编码不一致.将文件编码改成和字符串一样的编码.这种问题比较隐 ...

  8. php序列化与反序列化时字符集不一致问题的解决办法

    今天的用PHP的时候无意的出现了用unserialize()函数转换老是返回false,我确认我的字符串是没错的,测试了很多次还是一样,没办法,启用了error_reporting(E_ALL)启用错 ...

  9. StackMapTable format error

    环境:Oracle Java 7 , Mac OSX 报错如上图所示,主要是 Caused by: java.lang.ClassFormatError: StackMapTable format e ...

随机推荐

  1. ubuntu修改ssh服务的端口号

    一.找到ssh配置文件位置 vim /etc/ssh/sshd_config 二.修改ssh登录端口号 修改 port 22 为 port xxxx 三.重启ssh服务 /etc/init.d/ssh ...

  2. VMware打开虚拟机没反应的解决方案(全面汇总)

    VMware打开虚拟机无反应的解决方案(全面汇总)虚拟机没反应的解决办法大概是如下几点:一.若是第一次安装后打不开虚拟机,大致是如下两种解决方案: 1.大多数时候,虚拟机打不开都是因为防火墙拦截所致 ...

  3. Angular echarts图表自适应屏幕指令

    关于echarts图表自适应问题 一.引入js文件 1. 在html页面引入angular.min.js文件 2. 在html页面引入echarts.min.js文件 3. 在html页面引入app. ...

  4. inline-block元素间隙处理

    要使多个块级元素并行显示,可使用float或者inline-block进行处理 使用inline-block会出现元素之间的间隙 <div class="demo"> ...

  5. thinkphp5+qrcode生成二维码

    1.下载二维码插件Phpqrcode,地址 https://sourceforge.net/projects/phpqrcode/files/,把下载的文件夹放到\thinkphp\vendor下 2 ...

  6. vue+webpack+vue-cli+WebStrom 项目搭建

    作者QQ:1095737364    QQ群:123300273     欢迎加入!   1.安装 webpack 和vue-cli 模块: npm install webpack -g npm in ...

  7. 【读书笔记】iOS-网络-测试与操纵网络流量

    一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...

  8. Oracle查询时15分钟划分

    select to_date(to_char(sysdate, 'yyyy-MM-dd hh24') || ':' ||               floor(to_number(to_char(s ...

  9. 2018-10-27 22:44:33 c language

    2018-10-27  22:44:33 c language 标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字.并不是所有的编译器都支持二进制数字,只有一部分编译 ...

  10. Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...