ada*_*amw 7 java macos mime jakarta-mail
我在解码电子邮件附件的文件名方面遇到了问题.目前我正在使用JavaMail 1.4.2.该文件名为"Żółw.rtf"(这是Turtle.rtf的润色).邮件是使用Mail.app发送的(这看起来非常重要).重要的标题是:
--Apple-Mail-19-721116558
Content-Disposition: attachment;
filename*=utf-8''Z%CC%87o%CC%81%C5%82w.rtf
Content-Type: text/rtf;
x-unix-mode=0644;
name="=?utf-8?Q?Z=CC=87o=CC=81=C5=82w=2Ertf?="
Content-Transfer-Encoding: 7bit
Run Code Online (Sandbox Code Playgroud)
相应的javax.mail.Part.getFileName()返回"=?utf-8?Q?Z = CC = 87o = CC = 81 = C5 = 82w = 2Ertf?=",在应用MimeUtility.decodeText后,它是: "ZÃáoÃÅ≈Çw.rtf".显然不是原来:).
为了比较,MimeUtility.encodeText返回:
=?UTF-8?Q?=C5=BB=C3=B3=C5=82w.rtf?=
Run Code Online (Sandbox Code Playgroud)
相比之下:
=?utf-8?Q?Z=CC=87o=CC=81=C5=82w=2Ertf?=
Run Code Online (Sandbox Code Playgroud)
来自电子邮件.
根据我的研究,字母"Ż"可以用两种方式编码:作为单个字母或"Z"+以上点.MimeUtility.encodeText使用前者,Mail.app使用后者.
但是我希望能够解码两者.有没有办法解码使用JavaMail从Mail.app发送的文件名?或者也许还有其他一些图书馆?
谢谢!亚当
ada*_*amw 12
事实证明你必须规范化字符串:
String decoded = MimeUtility.decodeText(part.getFileName());
return Normalizer.normalize(decoded, Normalizer.Form.NFC);
Run Code Online (Sandbox Code Playgroud)
很奇怪,但有效!:)更详细地说,由于Mail.app将"Ż"编码为两个字符:"Z"+"dot-above",然后必须使用Normalizer重新组合.
亚当
| 归档时间: |
|
| 查看次数: |
4003 次 |
| 最近记录: |