我用126邮箱发送的邮件主题是:
 我是一个中国人,但我用php 接收程序 接收到的主题则是[date] => Wed, 6 Jul 2011 10:37:35 +0800 (CST)
    [Date] => Wed, 6 Jul 2011 10:37:35 +0800 (CST)
    [subject] => =?gbk?B?ztLKx9K7uPbW0Ln6yMs=?=
    [Subject] => =?gbk?B?ztLKx9K7uPbW0Ln6yMs=?=主题是如下乱码,
?gbk?B?ztLKx9K7uPbW0Ln6yMs=?=
请问如何转换成正确的主题。

解决方案 »

  1.   

    编码统一。你php文件跟你目标网页编码统一。
      

  2.   

    $subject  = "=?UTF-8?B?".base64_encode('邮件标题')."?=";
    这样试试呢?
      

  3.   

    我现在只想将?gbk?B?ztLKx9K7uPbW0Ln6yMs=?= 如下字符转成一个正常的显示的字符串请问如何处理?
      

  4.   

    你可以去我的博客里面看下那个写接受邮件的文章。
    http://blog.csdn.net/a82168506/article/details/6267814    /**
         * decode the subject of chinese
         *
         * @param string $subject
         * @return sting
         */
        public function subjectDecode($subject) {
            $separator = '=?GB2312';
            $encode = strstr($subject,$separator);
            if($encode) {
                $explodeArr = explode($separator,$subject);
                $length = count($explodeArr);
                $subjectArr = array();
                for($i = 0;$i < $length/2;$i++) {
                    $subjectArr[$i][] = $explodeArr[$i*2];
                    if(@$explodeArr[$i*2 + 1]) {
                        $subjectArr[$i][] = $explodeArr[$i*2 + 1];
                    }
                }
                foreach ($subjectArr as $arr) {
                    $subSubject = implode($separator,$arr);
                    if(count($arr) == 1) {
                        $subSubject = $separator.$subSubject;
                    }
                    $begin = strpos($subSubject ,"=?") ;
                    $end = strpos($subSubject , "?=") ;
                    $beginStr = '';
                    $endStr = '';
                    if ($end >0) {
                        if ($begin > 0) {
                            $beginStr = substr($subSubject,0,$begin) ;
                        }
                        if ((strlen($subSubject) - $end)> 2) {
                            $endStr = substr($subSubject,$end + 2 , strlen($subSubject)-$end-2) ;
                        }
                        $str = substr($subSubject,0, $end - strlen($subSubject) );
                        $pos = strrpos($str,"?") ;
                        $str = substr($str,$pos + 1 ,strlen($str)-$pos);
                        $subSubject = $beginStr . imap_base64($str) . $endStr ;
                        $subSubjectArr[] = mb_convert_encoding($subSubject,'utf-8','gbk');
                    }
                }
                $subject = implode('',$subSubjectArr);
            }
            return $subject ;
        }这是我去掉标题乱码的那个类。
      

  5.   

    $s = '=?gbk?B?ztLKx9K7uPbW0Ln6yMs=?=';
    $t = explode('?', $s);
    echo base64_decode($t[3]); //我是一个中国人
    echo $t[1];//gbk 依据 $t[1] 的值来决定是否运行对 $t[3] 解码后结果的转码