2010-04-20 11 views
7
में मंच के सेट

मैं जावानिर्धारण डिफ़ॉल्ट वर्ण जावा

में प्रोग्रामिंग कर रहा हूँ के रूप में मैं कोड है:

byte[] b = test.getBytes(); 

एपीआई में यह निर्दिष्ट किया जाता है कि हम चरित्र निर्दिष्ट नहीं करते हैं, तो एन्कोडिंग यह लेता है डिफ़ॉल्ट मंच चरित्र एन्कोडिंग।

"डिफ़ॉल्ट प्लेटफ़ॉर्म वर्ण एन्कोडिंग" का क्या अर्थ है?

क्या इसका मतलब जावा एन्कोडिंग या ओएस एन्कोडिंग है?

यदि इसका मतलब है कि ओएस एन्कोडिंग मैं विंडोज और लिनक्स के डिफ़ॉल्ट वर्ण एन्कोडिंग को कैसे देख सकता हूं? क्या वैसे भी हम कमांड लाइन का उपयोग कर डिफ़ॉल्ट वर्ण एन्कोडिंग प्राप्त कर सकते हैं?

+0

आपको स्पष्ट रूप से स्पष्ट करना चाहिए कि आपका क्या मतलब है। आप जानकारी क्यों चाहते हैं इसके साथ शुरू करें। –

+0

यदि आप पहले पूछे गए प्रश्न नहीं पा रहे हैं, तो बस यहां क्लिक करें जहां आपका नाम यहां एक लिंक के रूप में दिखाई देता है: [आनंद] (http://stackoverflow.com/users/226906/anand) और शीर्ष बार में। आप वहां प्रश्न पा सकते हैं, आपके पास बहुत अधिक अस्वीकार्य प्रश्न हैं (नोट: प्रश्न पृष्ठों पर फैले हुए हैं!)। उन्हें एक बार फिर से समीक्षा करें और कुछ वोट दें/स्वीकार करें। – BalusC

उत्तर

3

यह JVM के डिफ़ॉल्ट वर्ण एन्कोडिंग है कि आप पर चला रहे हैं इसका मतलब है,

एन्कोडिंग आप कर सकते हैं डिफ़ॉल्ट जाँच करने के लिए निम्नलिखित:

System.getProperty("file.encoding"); 

कि डिफ़ॉल्ट एन्कोडिंग वापस आ जाएगी (और उपरोक्त GetBytes() द्वारा उपयोग किया जाता है)।

+2

... लेकिन परेशान मत करो। 'String.getBytes()' का उपयोग करने के बहुत कम वैध कारण हैं, और जब आप इसका उपयोग करते हैं तो आपको हमेशा डिफ़ॉल्ट पर भरोसा करने के बजाय एन्कोडिंग निर्दिष्ट करना चाहिए। वही 'नई स्ट्रिंग (बाइट [])' रचनाकारों के लिए जाता है। –

28

सिस्टम प्रॉपर्टी file.encoding जेवीएम विक्रेता विशिष्ट है। इस विशिष्ट मामले में यह केवल सूर्य जेवीएम पर लागू होता है और यह सूर्य की तुलना में अन्य विक्रेताओं से जेवीएम पर काम नहीं कर सकता है।

इसके बजाय जावा एसई एपीआई का उपयोग Charset#defaultCharset() प्रदान किया गया।

Charset defaultCharset = Charset.defaultCharset(); 
+2

इसने मुझे अभी काट दिया है। मैं यूटीएफ -8 में डिफ़ॉल्ट संसाधन एन्कोडिंग सेट के साथ एक ग्रहण परियोजना डीबग कर रहा हूं। ऐसा लगता है कि ग्रहण स्वचालित रूप से प्रोजेक्ट संसाधन एन्कोडिंग (मेरे मामले में यूटीएफ -8) के समान होने के लिए नए रन (लॉच) कॉन्फ़िगरेशन के JVM एन्कोडिंग को कॉन्फ़िगर करता है। लेकिन मेरे विकास मशीन ओएस (विन 7) का एन्कोडिंग सीपी 1252 है। इसलिए जब तक मैं जेवीएम विक्रेता को नियंत्रित करता हूं, मैं "file.encoding" सिस्टम प्रॉपर्टी का उपयोग करूंगा, और Charset.defaultCharset() से बचें। रास्ते में जेडीके 1.7.0_17 (32 बिट) का उपयोग करना। – Zalumon

+0

मैं अपनी पिछली टिप्पणी का निष्कर्ष निकालता हूं। मैंने अभी देखा है कि ऊपर वर्णित परिदृश्य में "file.encoding" यूटीएफ -8 भी है। अब मैं असली ओएस एन्कोडिंग को समझने के बारे में बिल्कुल नहीं जानता। – Zalumon

+0

बलुससी! इस समुदाय में आपके सभी कड़ी मेहनत के लिए बड़ा धन्यवाद। तुम मेरे निजी नायक हो वैसे भी, क्या आपके पास आधिकारिक दस्तावेज़ीकरण का URL है जो 'file.encoding' प्रॉपर्टी का वर्णन करता है? –

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