7位和8位编码的消息在输出之前必须解码吗?


Do 7bit and 8bit encoded messages have to be decoded before outputting?

7bit传输编码与UTF-7,以及8bit与UTF-8之间可能的关系是什么?

像下面的代码那样手动将消息体编码转换为期望的编码(假设'utf-8')有意义吗?

 function decodeBody($body, $transferEncoding, $bodyEncoding) {
        switch ($transferEncoding) { 
            case '7BIT' :
            case '8BIT' :   
                                    // any additional decoding here ?
                $body = mb_convert_encoding($body, 'utf-8', $bodyEncoding);
            break;

            case 'BASE64' :
                $body = base64_decode($body);
                $body = mb_convert_encoding($body, 'utf-8', $bodyEncoding);
            break;
            case 'QUOTED_PRINTABLE' :
                $body = quoted_printable_decode($body);
                $body = mb_convert_encoding($body, 'utf-8', $bodyEncoding);
            break;
        }
        return $body;
    }

引用RFC1341:

值"8bit", "7bit"answers"binary"都表示没有进行编码…"8bit"表示行很短,但可能存在非ascii字符(具有高阶位集的八位元组)。

这意味着7bit是纯ascii,您根本不需要将其转换为UTF-8(因此在这种情况下不需要使用mb_convert_encoding())。'8bit'意味着可能存在非ascii字符,但据我所知,它不一定是UTF-8字符集编码-可能是iso-8859-1或其他什么。所以AFAIK '8bit'并不自动表示UTF-8。