2012-02-16 7 views
17

कुछ विरासत कोड अनुवाद के लिए प्लेटफ़ॉर्म के डिफ़ॉल्ट वर्णमाला पर निर्भर करता है। "पश्चिमी दुनिया" में विंडोज और लिनक्स प्रतिष्ठानों के लिए मुझे पता है कि इसका क्या अर्थ है। लेकिन रूसी या एशियाई प्लेटफार्मों के बारे में सोचकर मैं पूरी तरह से अनिश्चित हूं कि उनके प्लेटफ़ॉर्म का डिफ़ॉल्ट वर्णमाला क्या है (केवल यूटीएफ -16?)।जावा: विभिन्न प्लेटफॉर्म पर प्लेटफ़ॉर्म का डिफ़ॉल्ट वर्णमाला?

इसलिए मुझे पता है कि जब निम्न कोड पंक्ति को क्रियान्वित मैं क्या मिलेगा चाहते हैं:

System.out.println("Default Charset=" + Charset.defaultCharset()); 

संपादित करें: मैं वर्णसेट की समस्याओं और यहाँ यूनिकोड करने के लिए अपने अंतर के बारे में बात नहीं करना चाहते हैं । मैं सिर्फ यह जानना चाहता हूं कि कौन सा ऑपरेटिंग सिस्टम परिणामस्वरूप विशिष्ट वर्णमाला का परिणाम देगा। कृपया केवल ठोस मूल्य पोस्ट करें!

उत्तर

21

यह एक उपयोगकर्ता विशिष्ट सेटिंग है। कई आधुनिक लिनक्स सिस्टम पर, यह यूटीएफ -8 है। मैक्स पर, यह मैकरोमन है। विंडोज़ में यूएस में, यह अक्सर सीपी 1250 है, यूरोप में यह सीपी 1252 है। चीन में, आपको अक्सर सरलीकृत चीनी (बिग 5 या जीबी *) मिलती है।

लेकिन यह सिस्टम डिफ़ॉल्ट है, जो प्रत्येक उपयोगकर्ता किसी भी समय बदल सकता है। जो शायद समाधान है: सिस्टम प्रॉपर्टी file.encoding

See this answer का उपयोग करके अपना ऐप शुरू करते समय एन्कोडिंग सेट करें। मैं इसे एक छोटी सी स्क्रिप्ट में डालने का सुझाव देता हूं जो आपके ऐप को शुरू करता है, इसलिए उपयोगकर्ता डिफ़ॉल्ट को दंडित नहीं किया जाता है।

+0

सच है, सिस्टम के डिफ़ॉल्ट वर्णमाला को उपयोगकर्ता द्वारा बदला जा सकता है - लेकिन कितने गैर-डेवलपर इसे करते हैं? – Robert

+1

कॉर्पोरेट नेटवर्क में ऐसे लोगों के बारे में जो उनके साथ अपना वैश्विक लॉगिन लेते हैं? मैं बस इतना कह रहा हूं: कभी भी किसी भी उपयोगी मूल्य की अपेक्षा न करें। अपने कोड में, आपको हमेशा डेटा के एन्कोडिंग को निर्दिष्ट करना चाहिए जैसा कि आप इसे पढ़ते हैं।यदि यह काम नहीं करता है, तो आपको 'file.encoding' सेट करना होगा या चीजें ** ** ** टूट जाएंगे :-) –

+1

@Aaron Digulla: ऐसे मामलों में जहां डेटा उपयोगकर्ताओं द्वारा प्रदान किया जाता है और मेटाडेटा को एन्कोड किए बिना आता है, प्लेटफ़ॉर्म डिफ़ॉल्ट एन्कोडिंग वास्तव में आपकी सबसे अच्छी शर्त हो सकती है। –

6

"पश्चिमी दुनिया" में विंडोज और लिनक्स प्रतिष्ठानों के लिए मुझे पता है कि इसका क्या अर्थ है।

शायद आपको लगता है कि नहीं।

लेकिन रूसी या एशियाई प्लेटफार्मों के बारे में सोच मैं पूरी तरह अनिश्चित क्या उनके मंच के डिफ़ॉल्ट चारसेट

आमतौर पर यह जो कुछ भी एन्कोडिंग ऐतिहासिक दृष्टि से उनके देश में प्रयोग किया जाता है है कर रहा हूँ।

(बस यूटीएफ -16?)।

सबसे निश्चित रूप से नहीं। यूनिकोड मानक अस्तित्व से पहले कंप्यूटर उपयोग व्यापक रूप से फैल गया, और प्रत्येक भाषा क्षेत्र ने एक या अधिक एन्कोडिंग विकसित की जो इसकी भाषा का समर्थन कर सकती थीं। जिन लोगों को एएससीआईआईआई के बाहर 128 से कम वर्णों की आवश्यकता होती है, वे आम तौर पर "विस्तारित एएससीआईआईआई" विकसित करते हैं, जिनमें से कई को अंततः ISO-8859 के रूप में मानकीकृत किया गया था, जबकि अन्य ने दो-बाइट एन्कोडिंग विकसित की, अक्सर कई प्रतिस्पर्धी। उदाहरण के लिए, जापान में, ईमेल आमतौर पर JIS का उपयोग करते हैं, लेकिन वेबपृष्ठ Shift-JIS का उपयोग करते हैं, और कुछ एप्लिकेशन EUC-JP का उपयोग करते हैं। इनमें से कोई भी जावा में प्लेटफार्म डिफ़ॉल्ट एन्कोडिंग के रूप में सामना किया जा सकता है।

यह सब एक बड़ी गड़बड़ी है, यही कारण है कि यूनिकोड विकसित किया गया था। लेकिन गड़बड़ अभी तक गायब नहीं हुई है और हमें अभी भी इसका सामना करना पड़ेगा और इस बारे में कोई धारणा नहीं करनी चाहिए कि टेक्स्ट के रूप में व्याख्या किए जाने वाले बाइट्स के दिए गए गुच्छा को एन्कोड करना क्या है। There Ain't No Such Thing as Plain Text

+0

माइकल, आप इतने सुपर-दाएं हैं कि यह मुझे आँसू लाता है। यह एक आपदा है कि मैंने 'डिफ़ॉल्ट एन्कोडिंग' को रोकने के लिए मानक पुस्तकालयों को बंदर-पैचिंग पर भी विचार किया है। मेरे पास टेराबाइट निगम है जो इस समस्या से अप्रत्याशित रूप से विचलित हो गया है। यह अनुचित जावा डिफ़ॉल्ट है जो यहां समस्या है, जावा स्वयं नहीं, जो निश्चित रूप से इसका सामना कर सकता है। मुझे नहीं पता कि इसे व्यवस्थित तरीके से कैसे ठीक किया जाए, क्योंकि समय के अंत से बग-संगत होने के कारण जावा के * मोडस ऑपरंदी * लगता है। मुझे नहीं पता कि डिज़ाइन त्रुटियों को कैसे ठीक किया जाए। – tchrist

+0

बात यह है कि आप "कोई धारणा नहीं बना सकते"। उपयोगकर्ता * एन्कोडिंग के संकेत के साथ सादे पाठ फ़ाइलों को लिखेंगे *। विरासत प्रणाली * अज्ञात एन्कोडिंग के साथ स्ट्रिंग स्टोर करेगा। – plugwash

संबंधित मुद्दे