我有与电子邮件附件的文件名解码的问题。目前我正在使用JavaMail 1.4.2。该文件被命名为“Żółw.rtf”(这是Turtle.rtf的波兰语)。邮件使用Mail.app发送(这似乎相当重要)。重要的标头是:????解码Mail.app电子邮件附件的文件名中的Java
--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
相应javax.mail.Part.getFileName()返回“= UTF-8,问Z = CC = 870 = CC = 81 = C5 =82瓦特= 2Ertf = “,在应用MimeUtility.decodeText之后,它是:”ZáoÃ≈Çw.rtf“。显然不是原创:)。
为了比较,MimeUtility.encodeText返回:
=?UTF-8?Q?=C5=BB=C3=B3=C5=82w.rtf?=
对比:
=?utf-8?Q?Z=CC=87o=CC=81=C5=82w=2Ertf?=
从电子邮件的到来。
根据我的研究,字母“Z”,可以通过两种方式进行编码:无论是作为一个单个字母或“Z” +以上的点。 MimeUtility.encodeText使用前者,后者使用Mail.app。
但是我想能够解码两者。使用JavaMail从Mail.app发送文件时,是否有解码文件名的方法?或者也许有其他一些图书馆?
谢谢! 亚当
要回答我,你有正常化的字符串: 字符串解码= MimeUtility.decodeText(part.getFileName()); 返回Normalizer.normalize(解码,Normalizer.Form.NFC); 奇怪的,但工程! :) – adamw 2011-04-20 14:22:58
伟大的,你找到了解决方案!你能把它作为答案吗?这将有助于同样的问题,未来的人(你可能会得到upvotes以及;-)) – 2011-04-20 14:56:37