在php页面做了一个邮件接收功能
邮件接收出现乱码,标题显示如下
 =?utf-8?B?5qyi6L+O5L2/55So572R5piT5YWN6LS55LyB5Lia6YKu566x5pyN5Yqh?= 
我用下面这样的解码为什么还是显示乱码,只是乱码不一样了
elseif(strtolower(substr($obj->Subject,0,9))==strtolower("=?UTF-8?B"))


echo base64_decode(substr($obj->Subject,10,(strlen($obj->Subject)-12)));

解决方案 »

  1.   

    base64编码的字符串不含? ,因此先去除?号周边的
    <?php
    $t = "=?utf-8?B?5qyi6L+O5L2/55So572R5piT5YWN6LS55LyB5Lia6YKu566x5pyN5Yqh?=";
    preg_match("/\?[\w|\/|=|+]{5,}\?/i", $t, $result);
    var_dump($result[0]); // string(58) "?5qyi6L+O5L2/55So572R5piT5YWN6LS55LyB5Lia6YKu566x5pyN5Yqh?"
    echo base64_decode( substr($result[0], 1, -1) );
    欢迎使用网易免费企业邮箱服务
      

  2.   

    $s = '=?utf-8?B?5qyi6L+O5L2/55So572R5piT5YWN6LS55LyB5Lia6YKu566x5pyN5Yqh?=';list(,$charset, $type, $data)  = explode('?', $s);
    if($type == 'B') echo base64_decode($data);
    else echo $data;
      

  3.   

    奇怪我怎么单独弄个页面显示出来也是乱码string(58) "?5qyi6L+O5L2/55So572R5piT5YWN6LS55LyB5Lia6YKu566x5pyN5Yqh?" 娆㈣繋浣跨敤缃戞槗鍏嶈垂浼佷笟閭鏈嶅姟
      

  4.   

    php文件与浏览器统一编码 假设编码为utf-8 ,头部加上:header("content-type:text/html;charset=utf-8");
      

  5.   

    这段字符串是采用UTF-8编码的,可你的浏览器好像默认采用GBK编码。
    在代码最开头加上句
    <?php
    header("Content-Type: text/html; charset=utf-8"); // 声明数据采用UTF-8编码
    //...
    echo $title;
      

  6.   

    那收到的邮件有的GB2312。有的utf-8 好像没办法统一啊