反序列化打印不了好奇怪,该怎么解决
程序员文章站
2022-06-02 11:34:48
...
反序列化打印不了好奇怪
$safe_faqs = 'a:4:{i:1;a:2:{s:8:"question";s:37:"您最喜欢的网建程序是什么?";s:6:"answer";s:7:"DedeCMS";}i:2;a:2:{s:8:"question";s:6:"1+11=?";s:6:"answer";s:2:"12";}i:3;a:2:{s:8:"question";s:59:"中国哪项体育运动最让人听着伤心,看着揪心?";s:6:"answer";s:6:"足球";}i:4;a:2:{s:8:"question";s:29:"";s:6:"answer";s:24:"织梦内容管理系统";}}';
$safefaqs = unserialize($safe_faqs);
print_r($safefaqs);
?>
页面就是空白,为什么啊,求指点下
------解决方案--------------------
将文件编码修改成UTF-8即可.
------解决方案--------------------
对了 文件UTF8编码,中文要转换吧%XX%XX%XX这样的
------解决方案--------------------
LZ在反序列号之前先用stripslashes()这个试试
不知道是不是PHP自动给加了\这个符号了
------解决方案--------------------
解决此类问题的要点在于:知道序列化串是如何组成的
如 s:6:"足球";
s 表示是字符串
6 表示长度为6个字节
包括在双引号中的就是内容了
由于有长度指示,所以内容中可能出现的双引号不会产生歧义
对于这个例子,观察到内容为 足球 是两个汉字,而长度为 6,这就表示这是在 utf-8 编码环境中序列化的。
你把程序另存为 utf-8 编码的,或 $safe_faqs = iconv('gbk', 'utf-8', $safe_faqs);
转一下码,都是可以正常输出的
$safe_faqs = 'a:4:{i:1;a:2:{s:8:"question";s:37:"您最喜欢的网建程序是什么?";s:6:"answer";s:7:"DedeCMS";}i:2;a:2:{s:8:"question";s:6:"1+11=?";s:6:"answer";s:2:"12";}i:3;a:2:{s:8:"question";s:59:"中国哪项体育运动最让人听着伤心,看着揪心?";s:6:"answer";s:6:"足球";}i:4;a:2:{s:8:"question";s:29:"";s:6:"answer";s:24:"织梦内容管理系统";}}';
$safefaqs = unserialize($safe_faqs);
print_r($safefaqs);
?>
页面就是空白,为什么啊,求指点下
------解决方案--------------------
将文件编码修改成UTF-8即可.
------解决方案--------------------
对了 文件UTF8编码,中文要转换吧%XX%XX%XX这样的
------解决方案--------------------
LZ在反序列号之前先用stripslashes()这个试试
不知道是不是PHP自动给加了\这个符号了
------解决方案--------------------
解决此类问题的要点在于:知道序列化串是如何组成的
如 s:6:"足球";
s 表示是字符串
6 表示长度为6个字节
包括在双引号中的就是内容了
由于有长度指示,所以内容中可能出现的双引号不会产生歧义
对于这个例子,观察到内容为 足球 是两个汉字,而长度为 6,这就表示这是在 utf-8 编码环境中序列化的。
你把程序另存为 utf-8 编码的,或 $safe_faqs = iconv('gbk', 'utf-8', $safe_faqs);
转一下码,都是可以正常输出的
相关文章
相关视频
上一篇: PHP源码之explode使用说明