जावा 6 का उपयोग करते हुए एक स्ट्रिंग से 8 बिट वर्ण प्राप्त करने के लिए:String.getBytes ("ISO-8859-1") मेरे ओएस पर 16-बिट वर्ण देता एक्स
System.out.println(Arrays.toString("öä".getBytes("ISO-8859-1")));
मुझे देता है, लिनक्स पर: [-10, 28] लेकिन ओएस इलेवन प्राप्त करते हैं: [63, 63, 63, -89]
मुझे फैंसी न्यू एनओ चारसेट एन्कोडर क्लास का उपयोग करते समय एक ही परिणाम मिलते हैं। मैं क्या गलत कर रहा हूं? या यह ऐप्पल की गलती है? :)
ऐसा लगता है कि मैकरोमन मेरे ओएसएक्स सिस्टम पर डिफ़ॉल्ट एन्कोडिंग है। इस शाब्दिक के साथ स्रोत फ़ाइल यूटीएफ -8 में एन्कोड की गई है और यह गलत तरीके से मैकरोमन के रूप में इसे पार करती है। तो इसे कैसे ठीक करें? निर्दिष्ट करना -एनकोडिंग यूटीएफ -8 एक अच्छा विकल्प की तरह प्रतीत नहीं होता है। अगर मेरे पास कुछ अच्छी पुरानी आईएसओ -885 9 -1 फाइलें हैं तो क्या होगा? – lennartcl
यदि आपकी कुछ फ़ाइलें आईएसओ -885 9 -1 हैं, तो आपको उन्हें अलग से संकलित करना होगा और * * * एन्कोडिंग निर्दिष्ट करना होगा। मेरा सुझाव है कि आप हमेशा बचत और संकलन के लिए यूटीएफ -8 निर्दिष्ट करें। यदि मैकरोमन या आईएसओ -885 9 -1 फ़ाइल में घुसपैठ हो जाती है, तो संकलन विफल होने पर आपको इसके बारे में पता चल जाएगा; यूटीएफ -8 को अन्य अन्य एन्कोडिंग की तुलना में फर्जी डेटा स्वीकार करने में बहुत मुश्किल है। –
मुझे लगा कि यह आईएसओ -885 9 -1 पर स्विच करेगा अगर यह यूटीएफ -8 के रूप में फाइल नहीं पढ़ सका। लेकिन यह मेरे लिनक्स बॉक्स पर मामला प्रतीत नहीं होता है। तो '-कोडिंग यूटीएफ -8' वही व्यवहार देता है। मैं अभी भी इस स्विच का उपयोग करने के बारे में पूरी तरह से सहज महसूस नहीं करता हूं, लेकिन मुझे एहसास है कि मुझे इसे अपने ओएसएक्स बॉक्स और इसी तरह के सिस्टम पर ठीक करना होगा। मैं यह सोचने में मदद नहीं कर सकता कि वैश्विक "फिक्स" नहीं है, इसलिए अगली बार जब मैं यूटीएफ -8 स्ट्रिंग अक्षर का उपयोग करता हूं तो मेरे सिस्टम में विस्फोट नहीं होगा और मेरे पास यूनिट टेस्ट नहीं है समस्या को पकड़ने के लिए? – lennartcl