0

我正在创建电子邮件客户端,当我收到来自黑莓服务器的电子邮件时,它会将文件名发送为“=?utf-8?B?anBlZ2F0dGFjaG1lbnQuSlBFRw==?=”,但原始文件名是“jpegattachment.JPEG”,有时我会收到当我从其他邮件服务器收到纯文本时。所以这里我的问题是我可以获得一个可能编码也可能不编码的字符串。

有什么办法,我可以获得字符串的编码并将其解码为纯文本。

输入字符串为“=?utf-8?B?anBlZ2F0dGFjaG1lbnQuSlBFRw==?=”或“jpegattachment.JPEG”输出应为“jpegattachment.JPEG”。

任何想法??

4

2 回答 2

1

是的,这:anBlZ2F0dGFjaG1lbnQuSlBFRw==是 base64 编码jpegattachment.JPEG的。因此,只需使用 base64 对其进行解码。

在这里回答了如何: Decode Base64 data in Java

于 2010-01-22T09:52:10.977 回答
1

这是 MIME 编码的。即使 Base64 最流行,它也可能使用其他编码,如 Quoted-printable、二进制等。所以你应该使用现有的库来解码它。任何邮件程序都会内置解码器。

您可以使用decodeWord()来自 Java Mail,

http://java.sun.com/products/javamail/javadocs/javax/mail/internet/MimeUtility.html#decodeWord(java.lang.String)

deocdeText()如果您想单独保留纯文本,请尝试。

于 2010-01-22T18:19:09.953 回答