在做程序移植的时候,出现这么一个怪事
通过php的serialize函数生成的串解不出来,我把serialize串考到我笔记本上也解不出来,编码都是utf8的,而且都是lamp的环境

解决方案 »

  1.   

    序列化serialize 和反序列化unserialize 是要成对出现的。
      

  2.   

    忘记说明用unserialize解,我当然是用unserialize解呀,解不出来
      

  3.   


    header('content-type: text/html; charset=utf-8');
    $str='a:2:{i:1;a:3:{i:12597187292584;a:5:{s:10:"spec_value";s:6:"黑色";s:9:"spec_type";s:3:"img";s:13:"spec_value_id";s:3:"696";s:10:"spec_image";s:38:"/images/200911/1259566425581778739.jpg";s:15:"spec_value_face";s:0:"";}i:12597187306371;a:5:{s:10:"spec_value";s:9:"银灰色";s:9:"spec_type";s:3:"img";s:13:"spec_value_id";s:3:"698";s:10:"spec_image";s:38:"/images/200911/1259566506152191635.jpg";s:15:"spec_value_face";s:0:"";}i:12597187316664;a:5:{s:10:"spec_value";s:6:"咖色";s:9:"spec_type";s:3:"img";s:13:"spec_value_id";s:3:"695";s:10:"spec_image";s:38:"/images/200911/1259309691356943924.jpg";s:15:"spec_value_face";s:0:"";}}i:2;a:6:{i:12597187492596;a:5:{s:10:"spec_value";s:3:"70B";s:9:"spec_type";s:3:"txt";s:13:"spec_value_id";s:3:"369";s:10:"spec_image";s:0:"";s:15:"spec_value_face";s:0:"";}i:12597187503339;a:5:{s:10:"spec_value";s:3:"75A";s:9:"spec_type";s:3:"txt";s:13:"spec_value_id";s:3:"371";s:10:"spec_image";s:0:"";s:15:"spec_value_face";s:0:"";}i:12597187501784;a:5:{s:10:"spec_value";s:3:"75B";s:9:"spec_type";s:3:"txt";s:13:"spec_value_id";s:3:"372";s:10:"spec_image";s:0:"";s:15:"spec_value_face";s:0:"";}i:12597187517702;a:5:{s:10:"spec_value";s:3:"80A";s:9:"spec_type";s:3:"txt";s:13:"spec_value_id";s:3:"374";s:10:"spec_image";s:0:"";s:15:"spec_value_face";s:0:"";}i:12597187519754;a:5:{s:10:"spec_value";s:3:"80B";s:9:"spec_type";s:3:"txt";s:13:"spec_value_id";s:3:"375";s:10:"spec_image";s:0:"";s:15:"spec_value_face";s:0:"";}i:12597187524226;a:5:{s:10:"spec_value";s:3:"85A";s:9:"spec_type";s:3:"txt";s:13:"spec_value_id";s:3:"377";s:10:"spec_image";s:0:"";s:15:"spec_value_face";s:0:"";}}}';
    print_r(unserialize($str));
      

  4.   

    你的串中有 s:6:"黑色"; 显然这是 utf-8 编码的Array
    (
        [1] => Array
            (
                [48213416] => Array
                    (
                        [spec_value] => 黑色
                        [spec_type] => img
                        [spec_value_id] => 696
                        [spec_image] => /images/200911/1259566425581778739.jpg
                        [spec_value_face] => 
                    )            [48227203] => Array
                    (
                        [spec_value] => 银灰色
                        [spec_type] => img
                        [spec_value_id] => 698
                        [spec_image] => /images/200911/1259566506152191635.jpg
                        [spec_value_face] => 
                    )            [48237496] => Array
                    (
                        [spec_value] => 咖色
                        [spec_type] => img
                        [spec_value_id] => 695
                        [spec_image] => /images/200911/1259309691356943924.jpg
                        [spec_value_face] => 
                    )        )    [2] => Array
            (
                [48413428] => Array
                    (
                        [spec_value] => 70B
                        [spec_type] => txt
                        [spec_value_id] => 369
                        [spec_image] => 
                        [spec_value_face] => 
                    )            [48424171] => Array
                    (
                        [spec_value] => 75A
                        [spec_type] => txt
                        [spec_value_id] => 371
                        [spec_image] => 
                        [spec_value_face] => 
                    )            [48422616] => Array
                    (
                        [spec_value] => 75B
                        [spec_type] => txt
                        [spec_value_id] => 372
                        [spec_image] => 
                        [spec_value_face] => 
                    )            [48438534] => Array
                    (
                        [spec_value] => 80A
                        [spec_type] => txt
                        [spec_value_id] => 374
                        [spec_image] => 
                        [spec_value_face] => 
                    )            [48440586] => Array
                    (
                        [spec_value] => 80B
                        [spec_type] => txt
                        [spec_value_id] => 375
                        [spec_image] => 
                        [spec_value_face] => 
                    )            [48445058] => Array
                    (
                        [spec_value] => 85A
                        [spec_type] => txt
                        [spec_value_id] => 377
                        [spec_image] => 
                        [spec_value_face] => 
                    )        ))有什么不对吗?
    如果有,就是编码问题了
    你需要将程序保存为 utf-8 编码的
    如果是 gbk 编码方式,则需要转换一下编码
    print_r(unserialize(iconv('gbk', 'utf-8', $str)));
      

  5.   

    似乎答案快出来了,多谢唠叨大侠,我想再确认一下你php是什么和apache是什么版本的,
    我的笔记本上用这句话print_r(unserialize(iconv('gbk', 'utf-8', $str)));还是没有解出来
      

  6.   

    相关信息见手册 LXII. iconv Functionsphp 4.2.3 以后就默认安装了
      

  7.   

    你看看你的php文件是什么编码格式。。我也帮你运行了一下,是这个结果!~