दिलचस्प पोस्ट
क्या आप संपत्ति के माध्यम से एक ही कक्षा में एक चर का उपयोग कर सकते हैं? स्टोरीबोर्ड के साथ कस्टम टेबल देखें अनुभाग शीर्षलेख और पाद लेख कैसे कार्यान्वित करें एक जेनेरिक <T> टाइप आवृत्ति को एक वैरिएबल के साथ टाइप करना जिसमें टाइप होता है जावा असमर्थित प्रमुख लघु संस्करण 52.0 मौजूदा एक्सटेंशन विधि को ओवरराइड कैसे करें JSON नामकरण कन्वेंशन Winforms में नियंत्रित करने के लिए बाध्यकारी संपत्ति प्रोग्राम / गतिविधि / सेवा / रिसीवर से प्रोग्राम अपडेट करें मैं सी # के साथ वेब कैमरा वीडियो कैसे स्ट्रीम कर सकता हूं? एंड्रॉइड स्टूडियो – लक्ष्य एंड्रॉयड -18 को खोजने में असफल कॉलम में मूल्यों के द्वारा एक डेटा फ्रेम को फ़िल्टर करना दो अलग-अलग तिथियों के वर्षों में अंतर कैसे प्राप्त करें? सीएसएस पृष्ठभूमि अस्पष्टता स्काला में कब और क्यों उपयोग किया जाना चाहिए ActionBar / टूलबार पर और स्थिति पट्टी के नीचे प्रदर्शित करने के लिए मैं ड्रेवर लयआउट का उपयोग कैसे करूं?

जावा प्रॉपर्टी UTF-8 एन्कोडिंग इन एक्लिप्स

मुझे हाल ही में ISO-xx से utf8 पर काम कर रहे वेबएप के एन्कोडिंग को बदलना पड़ा है। गुणों की फ़ाइलों को छोड़कर सब कुछ चिकना हो गया। मैंने जोड़ा- -Dfile.encoding=UTF-8 और सामान्य फाइलें ठीक काम करती हैं I गुण हालांकि कुछ अजीब व्यवहार दिखाते हैं

अगर मैं Notepad ++ से utf8 एन्कोडेड गुणों को कॉपी करता हूं और उन्हें ग्रहण में पेस्ट करता है, तो वे दिखाते हैं और ठीक काम करते हैं। जब मैं गुण फ़ाइल को फिर से खोलता हूं, तो मुझे उचित लोगों के बजाय कुछ यूनिकोड वर्ण दिखाई देते हैं, जैसे:

 Zur\u00EF\u00BF\u00BDck instead of Zurück 

लेकिन ऐप अभी भी ठीक काम करता है अगर मैं गुणों को संपादित करना शुरू कर देता हूं, कुछ विशेष वर्ण जोड़ता हूं और सहेजता हूं, वे सही तरीके से प्रदर्शित करते हैं, हालांकि वे काम नहीं करते हैं और सभी पूर्ववर्ती विशेष वर्ण किसी भी अधिक काम नहीं करते हैं।

जब मैं सीवीएस के साथ स्थानीय संस्करण की तुलना करता हूं, तो मैं रिमोट फ़ाइल पर विशेष वर्णों को ठीक से देख सकता हूं और अपडेट के बाद मैं फिर से शुरू कर रहा हूं: ऐप काम करता है, लेकिन एक्लिप्स यूनिकोड वर्ण प्रदर्शित करता है

मैंने इसे सही क्लिक करके फ़ाइल एन्कोडिंग बदलने और "अन्य: UTF8" का चयन करने की कोशिश की लेकिन यह मदद नहीं करता। यह भी कहा: "सामग्री से निर्धारित: आईएसओ -8859-1"

मैं ईक्लिप 3.3 पर आधारित जावा 6 और जेबोस डेवलपर का उपयोग कर रहा हूं

मैं इसके साथ नोटपैड ++ में संपत्तियों को संपादित करके और एक्लिप्स में पेस्ट कर सकता हूं, लेकिन अगर कोई मुझे ग्रहण में तय करने में मदद कर सकता है तो मैं आभारी रहूंगा।

वेब के समाधान से एकत्रित समाधान "जावा प्रॉपर्टी UTF-8 एन्कोडिंग इन एक्लिप्स"

अपना समय बर्बाद मत करो, आप एक्लिप्स में संसाधन बंडल प्लगइन का उपयोग कर सकते हैं

बेसिक स्क्रीन शॉट

पुराने सोर्सफोर्ज पृष्ठ

गुण फाइलें आईएसओ -8859-1 परिभाषा के अनुसार – गुण वर्ग के डॉक्स देखें।

वसंत के पास एक प्रतिस्थापन है जो PropertiesFactoryBean विशिष्ट एन्कोडिंग से लोड हो सकता है

संपादित करें: जैसा कि लॉरेंस ने टिप्पणियों में लिखा था, जावा 1.6 ने load और store लिए ओवरलोड को प्रस्तुत किया, जो Reader / Writer लेते हैं। इसका मतलब है कि आप फ़ाइल के लिए एक पाठक बना सकते हैं, जो भी आप चाहते हैं, और इसे load करने के लिए पास करें। दुर्भाग्य से, FileReader अभी भी आपको कन्स्ट्रक्टर (एआरजीएच) में एन्कोडिंग निर्दिष्ट नहीं करने देता है, ताकि आप फाइल इन्पुटस्ट्रीम और इनटस्टस्ट्रीम InputStreamReader एक साथ चैन कर सकें। हालांकि, यह काम करेगा

उदाहरण के लिए, एक फाइल को UTF-8 का उपयोग करने के लिए पढ़ने के लिए:

 Properties properties = new Properties(); InputStream inputStream = new FileInputStream("path/to/file"); try { Reader reader = new InputStreamReader(inputStream, "UTF-8"); try { properties.load(reader); } finally { reader.close(); } } finally { inputStream.close(); } 

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

वर्ग के दस्तावेज़ से:

एक धारा में प्रॉपर्टी को सहेजते समय या उन्हें किसी धारा से लोड करते समय, आईएसओ 8859-1 वर्ण एन्कोडिंग का उपयोग किया जाता है। उन अक्षरों के लिए, जिन्हें इस एन्कोडिंग में प्रत्यक्ष रूप से प्रदर्शित नहीं किया जा सकता है, यूनिकोड बच निकले हैं; हालांकि, केवल एक 'यू' चरित्र को एस्केप अनुक्रम में अनुमति दी गई है। मूल फाइल उपकरण को प्रॉपर्टी फाइलों में और अन्य वर्ण एन्कोडिंग से कनवर्ट करने के लिए इस्तेमाल किया जा सकता है।

एपीआई से, स्टोर () विधि:

\ U0020 से कम वर्ण और \ u007E से अधिक वर्ण वर्णित \ uxxxx के लिए उपयुक्त हेक्साडेसिमल मान xxxx के रूप में लिखे गए हैं

 Properties props = new Properties(); URL resource = getClass().getClassLoader().getResource("data.properties"); props.load(new InputStreamReader(resource.openStream(), "UTF8")); 

एक जादू की तरह काम करता है

🙂

आपके द्वारा बताई गई प्रक्रिया में ऐसे कई बिंदु हैं जहां त्रुटियां हो सकती हैं, इसलिए मैं अनुमान लगाने की कोशिश नहीं करूँगा कि आप क्या कर रहे हैं, लेकिन मुझे लगता है कि मुझे पता है कि हुड के नीचे क्या हो रहा है।

EF BF BD U+FFFD का यूटीएफ -8 एन्कोडेड फॉर्म है, जो मानक प्रतिस्थापन चरित्र है जो डीकोडर्स द्वारा डाला जाता है जब वे दोषपूर्ण इनपुट का सामना करते हैं। ऐसा लगता है कि आपके पाठ को आईएसओ -8859-1 के रूप में सहेजा जा रहा है, फिर इसे यूटीएफ -8 के रूप में पढ़ते हैं, फिर यूटीएफ -8 के रूप में सहेजा जाता है, फिर मूलभूत एन्कोडिंग ( native2ascii -1252)।

  ü => 0xFC // save as ISO-8859-1
 0xFC => यू + एफएफएफडी / यूटीएफ -8 के रूप में पढ़ें
 U + FFFD => 0xEF 0xBF 0xBD // यूटीएफ -8 के रूप में सहेजें
 0xEF 0xBF 0xBD => \ u00EF \ u00BF \ u00 बीडी / मूल 2 एशियाई 

मेरा सुझाव है कि आप "file.encoding" संपत्ति अकेले छोड़ दें "File.separator" और "line.separator" की तरह, यह उतनी उपयोगी नहीं है जितना आप अपेक्षा करते हैं। इसके बजाय, पाठ फ़ाइलों को पढ़ने और लिखने के दौरान हमेशा एन्कोडिंग निर्दिष्ट करने की आदत करें।

 Properties props = new Properties(); URL resource = getClass().getClassLoader().getResource("data.properties"); props.load(new InputStreamReader(resource.openStream(), "UTF8")); 

यह जावा 1.6 में अच्छी तरह से काम करता है। मैं इसे 1.5 में कैसे कर सकता हूं, चूंकि गुण वर्ग में पर्स के लिए कोई तरीका नहीं है InputStreamReader

बहुत आसान तरीका है:

 props.load(new InputStreamReader(new FileInputStream("properties_file"), "UTF8")); 

* .properties फ़ाइलों के लिए बस एक और ग्रहण प्लगइन:

गुण संपादक

यह केवल कुछ वर्णों के लिए काम करता है … जिसमें जर्मन, पुर्तगाली, फ्रेंच के विशेष वर्ण शामिल हैं हालांकि, मैं रूसी, हिंदी और मंदारिन वर्णों के साथ परेशान हो गया। ये गुण स्वरूप 'native2ascii' में परिवर्तित नहीं किए जाते हैं, बजाय इसके साथ सहेजते हैं ?? ?? ??
मैं इन ऐप को सही ढंग से प्रदर्शित करने के लिए अपना ऐप प्राप्त कर सकता था, एकमात्र तरीका उन्हें यूटीएफ -8 प्रारूप में अनुवादित प्रॉपर्टी फाइलों में डालने के लिए है – जैसा कि क्यू के बजाय \ u0915 या \ u044F की बदौलत I कोई सलाह?

मैं आपको अटेशोरो ( http://attesoro.org/ ) का उपयोग करने की सलाह देता हूं। सरल और प्रयोग करने में आसान है और जावा में बना है

आप यूटीएफ -8 .प्रॉपर्टीज फाइलों को अपने अनुवादों को संग्रहीत करने और संसाधनों का उपयोग करने के लिए मान प्राप्त कर सकते हैं। समस्याओं से बचने के लिए आप एन्कोडिंग बदल सकते हैं:

 String value = RESOURCE_BUNDLE.getString(key); return new String(value.getBytes("ISO-8859-1"), "UTF-8"); 

यदि गुण एक्सएमएल या एचटीएमएल के लिए हैं, तो यह XML संस्थाओं का उपयोग करने के लिए सबसे सुरक्षित है वे पढ़ने के लिए बेकार हैं, लेकिन इसका अर्थ है कि गुणों की फ़ाइल को सीधे एएससीआईआई के रूप में माना जा सकता है, इसलिए कुछ भी गड़बड़ नहीं हो पाएगा

ध्यान दें कि HTML में ऐसी संस्थाएं हैं जो XML नहीं करता है, इसलिए मैं सीधे XML का उपयोग कर इसे सुरक्षित रखता हूं: http://www.w3.org/TR/html4/sgml/entities.html