2011-09-27 10 views
6

मैं इस रूप में एक स्ट्रिंग है: =?utf-8?B?zr...यूटीएफ -8 ईमेल विषय डीकोडिंग?

और मैं उचित UTF-8 एन्कोडिंग में फ़ाइल का नाम प्राप्त करना चाहते हैं। क्या मैवेन सेंट्रल में कहीं लाइब्रेरी विधि है जो मेरे लिए यह डिकोडिंग करेगी, या क्या मुझे पैटर्न का परीक्षण करने और मैन्युअल रूप से बेस 64 को डीकोड करने की आवश्यकता होगी?

उत्तर

13

एमआईएम टर्मिनोलॉजी में, उन एन्कोड किए गए हिस्सों को एन्कोडेड-शब्द कहा जाता है। JavaMail में javax.mail.internet.MimeUtility.decodeText देखें। decodeText विधि स्ट्रिंग में सभी एन्कोड किए गए शब्दों को डीकोड करेगा।

आप के साथ

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

मैं जोड़ देंगे एक नाम के साथ है कि मैं इस समस्या थी (नीचे माथी के जवाब के समान) एमआईएमई भाग पर "सामग्री-विस्थापन अनुलग्नक; फ़ाइल नाम =" फ़ाइल नाम में "=? utf-8? बी?" उपसर्ग जो यह विशेष एन्कोडेड शब्द है। – Drizzt321

3
javax.mail.internet.MimeUtility.decodeWord() 

दूसरी ओर, यदि आप अपने ईमेल डीकोड करने के लिए JavaMail का उपयोग, आप या तो विषय पार्स या माइम शरीर (संलग्नक) पार्स पर सब के बारे में देखभाल करने के लिए नहीं है।

बीटीडब्ल्यू इसे बेस 64 (ऐप्पल के ग्राहकों के साथ आम) होने की आवश्यकता नहीं है, इसे भी उद्धृत-प्रिंट करने योग्य (एमएस आउटलुक क्लाइंट के साथ आम) भी किया जा सकता है।

थंडरबर्ड जो भी प्रारूप छोटा है (जापानी के लिए बेस 64, अधिकांश यूरोपीय भाषाओं के लिए क्यूपी) का उपयोग करता है।

तुम सच में अपने आप को लागू करना चाहते हैं, RFC2047 और RFC2184 (आप के लिए है, वहाँ दो अलग अलग वर्ण सेट में विभाजित एन्कोडिंग जैसे कुछ बारीकियों रहे हैं या केवल सफेद स्थान तह द्वारा अलग आसन्न इनकोडिंग शब्द विलय) पर एक नजर है

4

MimeUtility.decodeText मेरे लिए काम कर रहा है,

जैसे Maven से प्राप्त कर सकते हैं,

MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?="); 
संबंधित मुद्दे