【问题标题】:Decoding UTF-8 email subject?解码 UTF-8 电子邮件主题?
【发布时间】:2011-11-26 07:13:09
【问题描述】:

我有一个这种形式的字符串:=?utf-8?B?zr...

我想以正确的 UTF-8 编码获取文件名。 maven Central 中是否有库方法可以为我进行此解码,还是我需要手动测试模式并解码 base64?

【问题讨论】:

    标签: java email encoding groovy utf-8


    【解决方案1】:

    在 MIME 术语中,这些编码块称为编码字。在 JavaMail 中查看 javax.mail.internet.MimeUtility.decodeTextdecodeText 方法将解码字符串中的所有编码字。

    你可以从 maven 中获取它

     <groupId>javax.mail</groupId>
     <artifactId>mail</artifactId>
     <version>1.4.4</version>
    

    【讨论】:

    • 我要补充一点,我在 MIME 部分“Content-Disposition attachment;filename="文件名有“=?utf-8?乙?”前缀是这个特殊的编码词。
    【解决方案2】:

    MimeUtility.decodeText 对我有用,

    例如,

    MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?=");
    

    【讨论】:

      【解决方案3】:
      javax.mail.internet.MimeUtility.decodeWord()
      

      另一方面,如果您使用 JavaMail 来解码您的电子邮件,则根本不必关心主题解析或 MIME 正文(附件)解析。

      顺便说一句,它不需要是 Base64(Apple 客户端常见),也可以是 Quoted-Printable(MS Outlook 客户端常见)。

      Thunderbird 使用较短的格式(Base64 用于日语,QP 用于大多数欧洲语言)。

      如果您真的想自己实现,请查看RFC2047RFC2184(您必须这样做,有一些细微之处,例如在两个不同的字符集中拆分编码或合并仅通过折叠分隔的相邻编码单词空白)

      【讨论】:

        猜你喜欢
        • 2012-01-27
        • 2013-06-08
        • 2020-08-07
        • 2017-05-16
        • 1970-01-01
        • 2013-04-21
        • 2015-10-01
        • 2011-12-31
        • 2012-12-25
        相关资源
        最近更新 更多