我有與電子郵件附件的文件名解碼的問題。目前我正在使用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