php 在utf8和gbk编码下使用serialize和unserialize互相序列化和反序列化会出现无法成功反序列化的问题。
问题出现的原因主要是在不同编码下strlen函数计算中文字符串长度不同的原因。
代码如下 复制代码
'php教程分享网','url'=>'http://www.111cn.net');
echo serialize($array);
//gbk编码 a:2:{s:5:title;s:13:php教程分享网;s:3:url;s:20:http://www.111cn.net;}
//utf8编码 a:2:{s:5:title;s:18:php教程分享网;s:3:url;s:20:http://www.111cn.net;}
?>
要解决这个问题就要在反序列化的时候重新修正字符串的长度。
解决方案
代码如下 复制代码
可以改成匿名函数
代码如下 复制代码
