如何在java中解码运行时的字符串?

时间:2010-01-22 09:40:30

标签: string encoding get decode

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

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

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

任何想法?

2 个答案:

答案 0 :(得分:1)

是的,这:anBlZ2F0dGFjaG1lbnQuSlBFRw==是base64编码的jpegattachment.JPEG。所以只需用base64解码它。

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

答案 1 :(得分:1)

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

您可以使用Java Mail中的decodeWord()

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

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