के तहत अलग-अलग परिणाम प्राप्त करते हैं, मैं अपने आवेदन की i18n संगतता का परीक्षण कर रहा हूं। मेरे पास विंडोज 7 का एक अंग्रेजी संस्करण है जिसका अर्थ है कि सिस्टम की डिस्प्ले भाषा अंग्रेजी है। और मैंने गैर-यूनिकोड अनुप्रयोग के लिए सिस्टम लोकेल को चीनी के रूप में सेट किया है।Charset.defaultCharset() जेडीके 1.7 और जेडीके 1.6
जेडीके 1.6 के तहत चीनी चरित्र के साथ एचटीएमएल फाइलों को निर्यात करते समय मेरे एप्लिकेशन में समस्याएं आईं, लेकिन jdk1.7 के तहत चलते समय ठीक काम करता है।
मैंने इसे डीबग किया और पाया कि प्रत्यक्ष कारण यह था कि Charset.defaultCharset()
अलग-अलग मान लौटा।
जेडीके 1.7 Charset.defaultCharset()
के तहत GBK
लौटा जो चीनी के लिए वर्णमाला है।
जेडीके 1.6 Charset.defaultCharset()
के तहत window_1252
लौटा जो लैटिन भाषा के लिए वर्णमाला है।
मुझे पता है कि कोड को नामित वर्णमाला द्वारा हल किया जा सकता है, utf-8
, कोड में।
लेकिन मैं जानना चाहता हूं कि क्यों Charset.defaultCharset()
जेडीके 1.7 और जेडीके 1.6 के तहत अलग-अलग मान लौटाते हैं।
अनुमान में, "गैर-यूनिकोड अनुप्रयोग के लिए लोकेल" सेटिंग को पढ़ने के लिए विंडोज़ जेआरई 7 में एक नई सुविधा है (मुझे लगता है कि रिलीज नोट्स में उल्लेख करने के लिए पर्याप्त महत्वपूर्ण नहीं हो सकता है, और बग डेटाबेस के लिए खोज सुविधा वास्तव में बग डेटाबेस नहीं खोजती है।) – millimoose
कुछ [यूनिकोड और अंतर्राष्ट्रीयकरण संवर्धन] रहे हैं (http://download.oracle.com/javase/7/docs/technotes/guides/intl /enhancements.7.html) जावा 7 में - शायद यह इसके साथ बंडल किया गया था। – Bringer128
क्या आप पोस्ट कर सकते हैं 'System.getProperty ("file.encoding") को jdk 6 और 7 दोनों में कॉल करके आप क्या प्राप्त करते हैं? – mindas