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

String 如何在java运行时解码字符串?,string,encoding,get,decode,String,Encoding,Get,Decode,我正在创建电子邮件客户端,当我从blackberry服务器接收电子邮件时,它发送的文件名为“=?utf-8?B?anblz2f0dgfjag1lbnqslbfrw=?=”,但原始文件名是“jpegattachment.JPEG”,有时我从其他邮件服务器接收到纯文本。 所以这里我的问题是我可以得到一个字符串,它可以被编码,也可以不被编码 有没有办法,我可以得到字符串的编码并将其解码成纯文本 输入字符串为“=?utf-8?B?anblz2f0dgfjag1lbnqslbfrw=?=”或“jpegat

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

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

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


有什么想法吗?

是的,这个:
anblz2f0dgfjag1lbnqslbfrw=
是base64编码的
jpegattachment.JPEG
。所以只要用base64解码就行了

如何回答,这里:
这是MIME编码的。尽管Base64是最流行的,但它可能会使用其他编码,如引用的可打印、二进制等。因此,您应该使用现有的库对其进行解码。任何邮件程序都将内置解码器

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


如果您不想使用纯文本,请尝试
deocdeText()

因此,我必须手动修剪“=?utf-8?B?”。我不能修剪,因为在某些情况下,它可能只是一个纯文本。我如何在运行时做到这一点,在运行时我可以接收纯文本或编码文本?嗯。。。如果您尝试解码非base64的字符串,它将抛出一个错误,因此您可以尝试捕获并检查该字符串。如果它在解码过程中没有抛出任何异常,那么它就是base64,如果它确实抛出异常,那么它就是纯文本。但我猜“B”代表Base64编码参数。。。(因此,如果字符串中有“B:您可以知道接下来两个问号之间的内容是Base64编码的。)