अंतर्राष्ट्रीयकरण संवर्द्धन
अंतर्राष्ट्रीयकरण संवर्द्धन Java 9 में Unicode 8.0, UTF-8 प्रॉपर्टीज फाइल्स, और डिफ़ॉल्ट रूप से CLDR लोकेल डेटा को सक्षम करने शामिल हैं। Java 9 10,555 कैरेक्टर्स, 29 स्क्रिप्ट्स, और 42 ब्लॉक्स के साथ यूनिकोड 8.0 मानकों तक का समर्थन करता है।
UTF-8 प्रॉपर्टीज फाइल्स
Java 9 में, प्रॉपर्टीज फाइल्स UTF-8 एन्कोडिंग में लोड होती हैं। डिफ़ॉल्ट रूप से, इनपुट स्ट्रीम पढ़ने पर MalformedInputException या UnmappableCharacterException फेंकता है। इस मामले में, PropertyResourceBundle इंस्टेंस अपवाद से पहले की स्थिति में रीसेट हो जाता है, इनपुट स्ट्रीम को ISO-8859-1 में फिर से पढ़ता है, और पढ़ना जारी रखता है।
यदि PropertyResourceBundle.encoding को या तो ISO-8859-1 या UTF-8 पर सेट किया गया है, तो PropertyResourceBundle इंस्टेंस उस एन्कोडिंग में इनपुट स्ट्रीम पढ़ता है, और अमान्य अनुक्रम का सामना करने पर अपवाद फेंकता है। सिस्टम प्रॉपर्टी को PropertyResourceBundle क्लास को इनिशियलाइज़ करते समय पढ़ा और मूल्यांकन किया जाता है, फिर प्रॉपर्टी को बदलने या हटाने वाली किसी भी कार्रवाई का कोई प्रभाव नहीं पड़ता।
ISO-8859-1 निर्दिष्ट करने पर
- ISO-8859-1 एन्कोडिंग में प्रतिनिधित्व न किए जा सकने वाले कैरेक्टर्स को यूनिकोड एस्केप्स द्वारा दर्शाया जाना चाहिए।
- अन्य एन्कोडिंग मान इस सिस्टम प्रॉपर्टी को अनदेखा करते हैं।
समस्या होने पर विकल्प
- प्रॉपर्टीज फाइल को UTF-8 एन्कोडिंग में परिवर्तित करें।
- रनटाइम सिस्टम प्रॉपर्टी निर्दिष्ट करें:
java.util.PropertyResourceBundle.encoding=ISO-8859-1
ये परिवर्तन Java 9 में अंतर्राष्ट्रीयकरण समर्थन को आधुनिक बनाते हैं।