2011-04-07 11 views
7

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

उत्तर

7

यह प्रदर्शन के बारे में नहीं है, लेकिन उचित रूप से एन्कोडेड टेक्स्ट को दिखाने और पढ़ने के बारे में है।

  • एक JVM विकल्प -Dfile.encoding=utf-8
  • सेट हमेशा तरीकों एक वर्ण एन्कोडिंग पैरामीटर के साथ अतिभारित का उपयोग करें: समस्या से निपटने के लिए तरीके का एक संख्या में हैं। ये String, Reader, Writer और अधिक के हैं।

मुझे लगता है कि उत्तरार्द्ध एक जरूरी है। यदि आप हमेशा जेवीएम विकल्प सेट करते हैं, तो यह काम करेगा, लेकिन अगर आप इसे किसी बिंदु पर सेट करना भूल जाते हैं, तो यादृच्छिक स्थानों पर अप्रत्याशित विफलताएं होंगी।

और दूसरा प्रश्न - यूटीएफ -8 के लिए चिपक गया।

this question भी देखें।

+0

मेरा दिन बचाया, धन्यवाद। –

2

आमतौर पर इसकी कोई समस्या नहीं है, अगर पढ़ने और लिखित फ़ाइलों को प्लेटफ़ॉर्म के बीच आदान-प्रदान नहीं किया जाता है। लेकिन अगर आपके पास उदा। विंडोज़ (Win1252, ISO8859-1 एन्कोडिंग के समान) पर बनाई गई कॉन्फ़िगरेशन फ़ाइल, और उसके बाद हालिया लिनक्स (यूटीएफ -8 एन्कोडिंग) पर अपना ऐप शुरू करें, कॉन्फ़िगरेशन फ़ाइल में 127 से ऊपर के सभी वर्णों की समस्या होगी (जैसे जर्मन उमलॉट्स ä , ö, ü, या € संकेत, या इसी तरह के पात्र)।

इस मामले में बस निर्दिष्ट करें कि आप हमेशा एन्कोडिंग का उपयोग करते हैं, और इसके साथ चिपके रहते हैं। यदि आप केवल सादा ASCII (गैर लैटिन विस्तारित!) फ़ाइलों का उपयोग करते हैं, तो आपको अब तक कोई समस्या नहीं होगी।

+2

_ अगर आप केवल सादा ASCII (गैर लैटिन विस्तारित!) फ़ाइलों का उपयोग करते हैं, तो आपको अब तक कोई समस्या नहीं होगी ._ - जब तक आप ज़ेड/ओएस – McDowell

+0

ओह, रोचक पर कोड नहीं चलाते। उनका डिफ़ॉल्ट एन्कोडिंग क्या है? :) – Daniel

2

डिफ़ॉल्ट एन्कोडिंग कुछ बहुभाषी इंस्टॉलेशन के मामले में ओएस से ओएस तक और उसी मशीन पर उपयोगकर्ताओं के बीच भी भिन्न होता है। इसका अर्थ यह है कि एप्लिकेशन द्वारा लिखे गए वर्ण डेटा में भिन्नता होगी और अलग-अलग डिफ़ॉल्ट एन्कोडिंग का उपयोग करके पढ़ने योग्य/भ्रष्ट दिखाई नहीं देगी। यूरो चरित्र (€) यूटीएफ -8 के तहत आईएसओ -885 9-15 और E2 82 AC के तहत विंडोज -1252, A4 के तहत बाइट 80 के रूप में एन्कोड करेगा।

विरासत एन्कोडिंग data loss का कारण बन सकता है क्योंकि उनमें से कई केवल कोड बिंदुओं की एक संकीर्ण श्रृंखला का समर्थन करते हैं।

डिफ़ॉल्ट एन्कोडिंग बदलने के लिए only supported way ऑपरेटिंग सिस्टम में इसे बदलना है।

यह आम तौर पर एन्कोडिंग चुनने में स्पष्ट हो सकता है और एक दोषरहित यूनिकोड एन्कोडिंग पसंद करते हैं (आमतौर पर UTF-8।) "ANSI" एनकोडिंग विंडोज पर डिफ़ॉल्ट बनाने के लिए निर्णय, उदाहरण के लिए, जब जब Windows 95 समर्थन अधिक भावना बनाया करने के लिए बेहतर है।

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