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

标签 php encoding imap

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”和“binary”都表示未执行任何编码... “8bit”表示行较短,但可能有非ASCII字符(设置了高位的八位字节)。

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

关于php - 7bit 和 8bit 编码的消息在输出之前必须解码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843871/

相关文章:

php - 使用 OpenID 而不要求用户知道他们的 OpenID url?

php - 流行的 Android 应用程序如何连接到服务器?

php - 让 Gmail 自动显示我在 HTML 电子邮件中嵌入的图片?

Java Apache FileUtils readFileToString 和 writeStringToFile 问题

c# - 从 RESTful API 加载许多 Base64 图像

java - 使用 JavaMail API 时,如何确保多服务器环境中的一台服务器仅读取电子邮件一次

php - Google Calendar API 始终对事件列表进行分页

c# - 像å这样的C#字母未正确显示在输出文件中

python - Gmail IMAP 有时返回错误的提取结果

php - 在 Windows 中安装 imap