【发布时间】:2011-11-26 07:13:09
【问题描述】:
我有一个这种形式的字符串:=?utf-8?B?zr...
我想以正确的 UTF-8 编码获取文件名。 maven Central 中是否有库方法可以为我进行此解码,还是我需要手动测试模式并解码 base64?
【问题讨论】:
标签: java email encoding groovy utf-8
我有一个这种形式的字符串:=?utf-8?B?zr...
我想以正确的 UTF-8 编码获取文件名。 maven Central 中是否有库方法可以为我进行此解码,还是我需要手动测试模式并解码 base64?
【问题讨论】:
标签: java email encoding groovy utf-8
在 MIME 术语中,这些编码块称为编码字。在 JavaMail 中查看 javax.mail.internet.MimeUtility.decodeText。 decodeText 方法将解码字符串中的所有编码字。
你可以从 maven 中获取它
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
【讨论】:
MimeUtility.decodeText 对我有用,
例如,
MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?=");
【讨论】:
javax.mail.internet.MimeUtility.decodeWord()
另一方面,如果您使用 JavaMail 来解码您的电子邮件,则根本不必关心主题解析或 MIME 正文(附件)解析。
顺便说一句,它不需要是 Base64(Apple 客户端常见),也可以是 Quoted-Printable(MS Outlook 客户端常见)。
Thunderbird 使用较短的格式(Base64 用于日语,QP 用于大多数欧洲语言)。
如果您真的想自己实现,请查看RFC2047 和RFC2184(您必须这样做,有一些细微之处,例如在两个不同的字符集中拆分编码或合并仅通过折叠分隔的相邻编码单词空白)
【讨论】: