我有一个以这种形式的字符串:=?utf-8?B?zr...
我希望以正确的UTF-8编码获取文件的名称。在maven中心的某个地方有一个库方法可以为我做这个解码,还是我需要手动测试模式和解码base64?
答案 0 :(得分:15)
在MIME术语中,那些编码的块称为编码字。在JavaMail中查看javax.mail.internet.MimeUtility.decodeText
。 decodeText
方法将解码字符串中的所有编码字。
您可以使用
从maven中获取它 <groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
答案 1 :(得分:4)
javax.mail.internet.MimeUtility.decodeWord()
另一方面,如果您使用JavaMail解码电子邮件,则根本不需要关心主题解析或MIME正文(附件)解析。
BTW它不需要是Base64(与Apple的客户端相同),它也可以是Quoted-Printable(与MS Outlook客户端一样)。
Thunderbird使用较短的格式(日语为Base64,大多数欧洲语言为QP)。
如果您真的想亲自实现它,请查看RFC2047和RFC2184(您必须注意,有两个细微之处,例如在两个不同的字符集中拆分编码或合并相邻的编码字只能通过折叠白色空间分开)
答案 2 :(得分:4)
MimeUtility.decodeText正在为我工作,
例如
MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?=");