सब केवल आधिकारिक (मौजूदा नहीं ...) ज़िप प्रारूप यूनिकोड वर्ण (तब आप किसी भी ASCII के अलावा अन्य एन्कोडिंग का उपयोग नहीं कर सकते हैं) की अनुमति नहीं है पहले।
कहा कई उपकरण और पुस्तकालयों आप विभिन्न एन्कोडिंग का उपयोग करने की अनुमति है, लेकिन यह (उदाहरण के लिए यदि आप को डिकोड करने के लिए मजबूर कर रहा UTF8/UTF32 या जो कुछ भी एक फाइल अन्य एन्कोडिंग के साथ इनकोडिंग कोशिश) विफल हो सकता है।
फ़ाइल नाम ASCII में एन्कोड किया गया है, तो यह आपके सिस्टम के कोड पृष्ठ मिलेगा:
प्रविष्टि ऐसे नाम हैं जो केवल ASCII वर्ण हो के लिए, भाषा एन्कोडिंग ध्वज सेट है, और मौजूदा सिस्टम डिफ़ॉल्ट कोड पृष्ठ का उपयोग एंट्री नामों को एन्कोड करने के लिए किया जाता है।
आपके पास इस विषय के बारे में .NET कक्षाओं के साथ इतना बड़ा नियंत्रण नहीं है। लेकिन यदि आप एन्कोडिंग निर्दिष्ट नहीं करते हैं तो आपको डिफ़ॉल्ट व्यवहार (ASCII के बाहर कोड के लिए यूटीएफ 8 और ASCII के लिए वर्तमान कोड पेज) मिलेगा। अधिकांश बार यह काम करता है (यदि एक ही कोड पेज के भीतर दोनों एन्कोडिंग और डिकोडिंग किया गया है)।
इससे कैसे बचें? यह आसान नहीं है (क्योंकि हम एक मानक की कमी है), लेकिन संक्षेप में प्रस्तुत करने:
- एन्कोडिंग मजबूर मत करो (जब तक आप ज़िप फ़ाइल लेने जाएगा तो आप उसे ज्ञात एन्कोडिंग के साथ तो ज़िप किया गया)।
- अधिकांश मामलों में डिफ़ॉल्ट व्यवहार बहुत अच्छा है।
- एएससीआईआई एन्कोडेड ज़िपों के लिए विस्तारित वर्ण सिस्टम कोड पृष्ठ पर निर्भर है (यह दोनों प्रणालियों में समान होना चाहिए)।
- उपयोगकर्ता को एन्कोडिंग बदलने के लिए एक तरीका प्रदान करें (आप ज़िप उपयोगिता द्वारा उपयोग किए जाने वाले एन्कोडिंग की जांच नहीं कर सकते हैं और इसके बारे में कोई मानक नहीं है)। इसका मतलब न केवल एन्कोडिंग (यूटीएफ 8/यूटीएफ 16 या जो कुछ भी) को बदलने के लिए है, लेकिन कोड पेज भी (यदि वे मेल नहीं खाते हैं)। GetEncoding फ़ंक्शन आपको निर्दिष्ट कोड पृष्ठ के लिए सही एन्कोडर देगा)।
सर्वश्रेष्ठ संकेत मैं आपको दे सकता हूं? डिफ़ॉल्ट व्यवहार पर निर्भर (यह बहुत आम है) लेकिन अगर आप को अधिकांश ज़िपों के साथ संगत होने की आवश्यकता है, तो आपके उपयोगकर्ताओं को इसे बदलने के लिए एक तरीका प्रदान करें (क्योंकि प्रत्येक को एक अलग तरीके से कार्यान्वित किया जा सकता है) न केवल एन्कोडिंग के लिए बल्कि कोड पेज भी। विशेष रूप से इसे जर्मन विशिष्ट कोड पृष्ठ के साथ कोड से मजबूर नहीं करें क्योंकि यह आपके द्वारा संभाले जाने वाले पहले स्पेनिश/फ़्रेंच/इतालवी/डच फ़ाइल के साथ टूट जाएगा (और उनके लिए एक सामान्य कोड पृष्ठ नहीं है)।
बीटीडब्ल्यू अगर आप गलत एन्कोडिंग (कोड पृष्ठ नहीं) वाली फाइल खोलते हैं तो विभिन्न अपवादों को संभालने के लिए तैयार रहें।भविष्य पाठकों (टिप्पणियों से) के लिए
संपादन: सी.पी. 850 कैच आम पश्चिमी यूरोप पात्रों में से अधिकांश लेकिन यह यूरोप के लिए कोड पृष्ठ नहीं है। इसकी तुलना करें, उदाहरण के लिए, पूर्वी यूरोप भाषाओं या नार्वेजियन के साथ। यह उनसे मेल नहीं खाता है (और उस भाषा में 33-127 रेंज के बाहर के पात्र बहुत सुंदर हैं क्योंकि वे बॉक्स ड्राइंग नहीं कर रहे हैं)। सी.पी. 850 (Ê उदाहरण के लिएईı) से कुछ पात्र में उपलब्ध नहीं हैं सी.पी. 865 (Norsk भाषा के लिए) (मान लें)।
मुझे एक उदाहरण के साथ स्पष्ट करने दें। आपके पास इस नाम के साथ फ़ाइल नाम (Trukey से) है: "Garip Dosya Adı.txt"। अंतिम चरित्र में सीपी 857 (तुर्की के लिए) पर कोड 141 है। यदि आप सीपी 850 का उपयोग कर रहे हैं तो आपको "ı की बजाय मूल सीपी 850 में कोड 213 है। मैं पूर्व पूर्वी भाषाओं का भी उल्लेख नहीं करूंगा (क्योंकि एक निश्चित कोड पृष्ठ भी गन्दा बना देगा यदि आप यूरोप तक सीमित हैं)। यही कारण है कि आप एक निश्चित कोड पृष्ठ सेट नहीं कर सकते हैं जब तक कि आप अपने स्वयं के उपयोग के लिए एक छोटी उपयोगिता लिख रहे हों।
स्रोत
2013-11-15 09:20:58
आप 'UTF32' –
को भी आजमा सकते हैं, यह निर्दिष्ट करते समय त्रुटि देता है" निर्दिष्ट प्रविष्टि नाम समर्थित नहीं है " – eMizo
क्या आप सुनिश्चित हैं कि फ़ाइल नाम कोर्रेक संग्रहीत हैं? अन्य अनजिप प्रोग्राम का उपयोग करके कौन से नाम दिखते हैं? – GvS