2009-06-17 13 views

उत्तर

5

यह लोकेल-निर्भर होने जा रहा है। विभिन्न लोकेल, अलग-अलग डिफ़ॉल्ट एन्कोडिंग।

+0

तो यह एन्कोडिंग होस्ट ऑपरेटिंग सिस्टम है पर निर्भर करता है के लिए चला जाता? –

81

जेवीएम का डिफ़ॉल्ट वर्ण सेट उस प्रणाली का है जो यह चल रहा है। इसके लिए कोई विशिष्ट मूल्य नहीं है और आपको आमतौर पर डिफ़ॉल्ट एन्कोडिंग पर किसी भी विशेष मूल्य पर निर्भर नहीं होना चाहिए।

यह Charset.defaultCharset() के माध्यम से कार्यावधि में पहुँचा जा सकता है कि यदि आप के लिए किसी भी फायदा नहीं है, हालांकि वास्तव में आप हमेशा निर्दिष्ट करने एन्कोडिंग का एक बिंदु बनाना चाहिए स्पष्ट रूप से आप ऐसा कर सकते हैं।

+5

यदि आप सही हैं तो मुझे थोड़ा अजीब लगता है http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp#text-representation का कहना है कि यह हमेशा यूटीएफ -16 है। –

+30

यूटीएफ -16 यह है कि जेवीएम में आंतरिक रूप से पाठ का प्रतिनिधित्व कैसे किया जाता है। डिफ़ॉल्ट एन्कोडिंग निर्धारित करता है कि JVM कैसे बाइट्स को फ़ाइलों से पढ़ता है (उदाहरण के लिए 'FileReader' का उपयोग करके)। – JesperE

+6

यह उत्तर सही है, लेकिन संदर्भ के लिए, लिनक्स पर यह आमतौर पर "यूटीएफ -8" होता है, और विंडोज़ पर यह आमतौर पर "सीपी 1252" होता है। – Jeutnarg

24

ध्यान दें कि आप भ्रमित नाम वाली संपत्ति file.encoding का उपयोग कर JVM के डिफ़ॉल्ट एन्कोडिंग को बदल सकते हैं।

यदि आपका एप्लिकेशन एन्कोडिंग के लिए विशेष रूप से संवेदनशील है (शायद डिफ़ॉल्ट एन्कोडिंग को लागू करने वाले एपीआई के उपयोग के माध्यम से), तो आपको इसे एक निश्चित (ज्ञात) मान पर JVM स्टार्टअप पर स्पष्ट रूप से सेट करना चाहिए।

+14

ध्यान दें कि 'file.encoding' को JVM स्टार्टअप पर निर्दिष्ट किया जाना चाहिए (यानी cmdline पैरामीटर -Dfile.encoding या JAVA_TOOLS_OPTIONS के माध्यम से); आप इसे रनटाइम पर सेट कर सकते हैं, लेकिन इससे कोई फर्क नहीं पड़ता। Http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding देखें – sleske

19

तीन "डिफ़ॉल्ट" एन्कोडिंग हैं:

  • file.encoding:
    System.getProperty("file.encoding")

  • java.nio.Charset:
    Charset.defaultCharset()

  • और InputStreamReader की एन्कोडिंग:
    InputStreamReader.getEncoding()

आप इसके बारे में this page पर और अधिक पढ़ सकते हैं।

5

मुझे यकीन है कि इस JVM implemenation विशिष्ट है हूँ, लेकिन मैं क्रियान्वित करते हुए करने के लिए "प्रभाव" मेरे JVM के डिफ़ॉल्ट file.encoding कर रहा था:

export LC_ALL=en_US.UTF-8 

(Ubuntu 12.04 पर जावा संस्करण 1.7.0_80 चल)

इसके अलावा, यदि आप अपने यूनिक्स कंसोल से "लोकेल" टाइप करते हैं, तो आपको वहां और जानकारी दिखाई देनी चाहिए।

सभी क्रेडिट http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/

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