ज़िप विनिर्देश (ऐतिहासिक रूप से) निर्दिष्ट नहीं है कि एम्बेडेड फ़ाइल नामों और टिप्पणियों के लिए कौन सी वर्ण एन्कोडिंग का उपयोग किया जाए, मूल आईबीएम पीसी वर्ण एन्कोडिंग सेट, जिसे आमतौर पर आईबीएम कोड पृष्ठ 437 के रूप में जाना जाता है, केवल एकमात्र माना जाता है एन्कोडिंग समर्थित है। जार विनिर्देश इस बीच स्पष्ट रूप से यूटीएफ -8 का उपयोग एन्कोडिंग के रूप में निर्दिष्ट करता है ताकि जार फ़ाइलों में सभी फ़ाइल नामों और टिप्पणियों को एन्कोड और डीकोड किया जा सके। हमारे java.util.jar और java.util.zip कार्यान्वयन के लिए जार/ज़िप फ़ाइलों में संग्रहीत फ़ाइल नामों और टिप्पणियों से निपटने के दौरान यूटीएफ -8 को एकमात्र एन्कोडिंग के रूप में उपयोग करने के लिए जार विनिर्देश का कड़ाई से पालन किया गया।
परिणाम? "पारंपरिक" ज़िप उपकरण द्वारा बनाई गई ज़िप फ़ाइल java.util.jar/ज़िप आधारित उपकरण के लिए सुलभ नहीं है, और इसके विपरीत, यदि फ़ाइल नाम में वर्ण हैं जो सीपी 437 के बीच संगत नहीं हैं (वैकल्पिक रूप से, उपकरण बस उपयोग कर सकते हैं डिफ़ॉल्ट प्लेटफॉर्म एन्कोडिंग) और यूटीएफ -8
अधिकांश यूरोपीय लोगों के लिए, आप "भाग्यशाली" हैं :-) कि आपको केवल "मुट्ठी भर" पात्रों से बचने की ज़रूरत है, जैसे उमलॉट्स (ठीक है, मैं बस मजाक कर रहा हूं), लेकिन जापानी और चीनी के लिए, अधिकांश पात्र भाग्य से बाहर हैं। यही कारण है कि बग 424449 9 इतने सालों से शीर्ष 25 जावा बग्स पर नंबर 1 रहा था। बग अब सूची में नहीं है :-) यह अंततः ओपनजेडीके 7, बी 57 में "निश्चित" हो गया है। मैं अभी भी अपने लिए रिकॉर्ड/कुडो के रूप में एक स्नैपशॉट रखता हूं :-)
जेडीके 7 बी 57 में समाधान (मैं "फिक्स" से "समाधान" का उपयोग करता हूं) ZipInputStream ZipOutStream और ZipFile रचनाकारों के एक नए सेट में पेश करना है जैसा कि नीचे दिखाया गया है, पैरामीटर के रूप में एक विशिष्ट "वर्णमाला" के साथ।
zipfile (फ़ाइल, वर्णसेट)
ZipInputStream (InputStream, वर्णसेट)
ZipOutputStream (OutputStream, वर्णसेट)
इन नए कंस्ट्रक्टर्स साथ
, आवेदन अब उन तक पहुँच सकते हैं गैर-यूटीएफ -8 ज़िप फाइलें ZipInputStream या ZipFile ऑब्जेक्ट्स के माध्यम से विशिष्ट एन्कोडिंग के साथ बनाई गई हैं, या नए ZipOutputStream (os, c के माध्यम से गैर-यूटीएफ -8 में एन्कोड किए गए ज़िप फ़ाइलों को बनाते हैं। हरसेट) कन्स्ट्रक्टर, यदि आवश्यक हो।
ज़िप जार टूल का एक पट्टी-डाउन संस्करण है जो "एन्कोडिंग" विकल्प के साथ प्रवेश नाम और टिप्पणी के लिए गैर-यूटीएफ 8 एन्कोडिंग का समर्थन करने के लिए है, यह नए एपीआई का उपयोग करने के लिए डेमो के रूप में कार्य कर सकता है (मैंने उपयोग किया यह एक इकाई परीक्षण के रूप में)। मैं अभी भी अपने आप से बहस कर रहा हूं अगर आधिकारिक तौर पर जार टूल में "-कोडिंग" शुरू करना अच्छा विचार है ...
नमस्ते चीनी फ़ाइल नाम ज़िप संपीड़न probem http://stackoverflow.com/a के लिए इसे देखें/21521784/1194578 – mathi