में एन्कोड किया गया है, तो मैं कैसे जांच सकता हूं कि एक स्ट्रिंग वैध यूटीएफ -8 प्रारूप में है या नहीं?जांचें कि क्या स्ट्रिंग वैध यूटीएफ -8 जावा
उत्तर
केवल बाइट डेटा की जांच की जा सकती है। यदि आपने स्ट्रिंग का निर्माण किया है तो यह पहले से ही यूटीएफ -16 में आंतरिक रूप से है।
केवल बाइट सरणी यूटीएफ -8 एन्कोडेड हो सकती है।
यहां यूटीएफ -8 रूपांतरणों का एक आम मामला है।
String myString = "\u0048\u0065\u006C\u006C\u006F World";
System.out.println(myString);
byte[] myBytes = null;
try
{
myBytes = myString.getBytes("UTF-8");
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
System.exit(-1);
}
for (int i=0; i < myBytes.length; i++) {
System.out.println(myBytes[i]);
}
आप अपनी बाइट सरणी की एन्कोडिंग को नहीं जानते हैं, juniversalchardet एक पुस्तकालय आप इसे पता लगाने में मदद करने के लिए है।
बस एक स्पष्टीकरण के रूप में, स्ट्रिंग का एक उदाहरण यूटीएफ -16 एन्कोडिंग फॉर्म में नहीं है, कड़ाई से बोल रहा है, क्योंकि यह बीमार गठित कोड इकाई अनुक्रमों (पृथक सरोगेट कोड इकाइयों के रूप में) की अनुमति देता है। हालांकि, यह एक यूनिकोड 16-बिट स्ट्रिंग है। –
और भी कड़ाई से बोलते हुए, जावा स्ट्रिंग भी एक वास्तविक यूनिकोड 16-बिट स्ट्रिंग नहीं है, क्योंकि इसमें [सरोगेट्स] हो सकता है (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/ ओपनजेडके/6-बी 14/सूर्य/एनओओ/सीएस/सरोगेट.जावा) यूसीएस 4 (3- और 4-बाइट) पात्रों के लिए। – rustyx
आईसीयू 4 जे एक और जावा लाइब्रेरी है जो आपको बाइट सरणी के एन्कोडिंग का पता लगाने में मदद कर सकती है: http://site.icu-project.org/ –
निम्नलिखित पोस्ट आधिकारिक जावा ट्यूटोरियल से उपलब्ध है: https://docs.oracle.com/javase/tutorial/i18n/text/string.html पर उपलब्ध है।
String original = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");
जब मुद्रित, स्ट्रिंग मूल नामित के रूप में प्रकट होता है::
AêñüC
UTF को स्ट्रिंग ऑब्जेक्ट परिवर्तित करने के लिए
StringConverter कार्यक्रम एक स्ट्रिंग यूनिकोड वर्ण युक्त बनाने के द्वारा शुरू होता है -8, GetBytes विधि का आह्वान करें और पैरामीटर के रूप में उपयुक्त एन्कोडिंग पहचानकर्ता निर्दिष्ट करें। getBytes विधि UTF-8 प्रारूप में बाइट्स की एक सरणी देता है। गैर-यूनिकोड बाइट्स की सरणी से स्ट्रिंग ऑब्जेक्ट बनाने के लिए, एन्कोडिंग पैरामीटर के साथ स्ट्रिंग कन्स्ट्रक्टर का आह्वान करें। कोड इन कॉल करता है कि एक कोशिश ब्लॉक में संलग्न है, मामले में निर्दिष्ट एन्कोडिंग असमर्थित है:
try { byte[] utf8Bytes = original.getBytes("UTF8"); byte[] defaultBytes = original.getBytes(); String roundTrip = new String(utf8Bytes, "UTF8"); System.out.println("roundTrip = " + roundTrip); System.out.println(); printBytes(utf8Bytes, "utf8Bytes"); System.out.println(); printBytes(defaultBytes, "defaultBytes"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
बाहर utf8Bytes में मूल्यों और defaultBytes सरणियों StringConverter कार्यक्रम प्रिंट एक महत्वपूर्ण बिंदु प्रदर्शित करने के लिए: की लंबाई परिवर्तित टेक्स्ट टेक्स्ट की लंबाई के समान नहीं हो सकती है। कुछ यूनिकोड वर्ण एकल बाइट्स में अनुवाद करते हैं, अन्य जोड़े या बाइट्स के तीन गुना में अनुवाद करते हैं। प्रिंटबाइट विधि बाइट एरो को बाइटटेहेक्स विधि का आह्वान करके प्रदर्शित करती है, जिसे स्रोत फ़ाइल, यूनिकोडफॉर्मेटर.जावा में परिभाषित किया गया है। यहां प्रिंटबाइट विधि है:
public static void printBytes(byte[] array, String name) { for (int k = 0; k < array.length; k++) { System.out.println(name + "[" + k + "] = " + "0x" + UnicodeFormatter.byteToHex(array[k])); } }
प्रिंटबाइट विधि का आउटपुट निम्नानुसार है। ध्यान दें कि केवल पहले और पिछले बाइट्स, ए और सी अक्षर, दोनों सरणियों में ही कर रहे हैं:
utf8Bytes[0] = 0x41 utf8Bytes[1] = 0xc3 utf8Bytes[2] = 0xaa utf8Bytes[3] = 0xc3 utf8Bytes[4] = 0xb1 utf8Bytes[5] = 0xc3 utf8Bytes[6] = 0xbc utf8Bytes[7] = 0x43 defaultBytes[0] = 0x41 defaultBytes[1] = 0xea defaultBytes[2] = 0xf1 defaultBytes[3] = 0xfc defaultBytes[4] = 0x43
- 1. यूटीएफ -8 स्ट्रिंग
- 2. यूटीएफ -8 स्ट्रिंग
- 3. यूटीएफ -8 स्ट्रिंग
- 4. पता लगाएं कि यूटीएफ -8
- 5. जांचें कि क्या स्ट्रिंग
- 6. एक यूटीएफ -8 एन्कोडेड स्ट्रिंग
- 7. जावा यूटीएफ -8 अजीब व्यवहार
- 8. अरबी यूटीएफ 8 + अंग्रेजी स्ट्रिंग
- 9. जावा प्रोग्राम यूटीएफ -8 एन्कोडिंग
- 10. यूटीएफ -8 जावा में ईबीसीडीआईसी
- 11. एन्कोडिंग 'यूटीएफ -8' जावा रनटाइम
- 12. जावा सरणी सॉर्ट यूटीएफ -8
- 13. क्या यूटीएफ 8
- 14. यूटीएफ -8 गुणों में जावा स्ट्रिंग को एन्कोड किया गया
- 15. यूटीएफ -8
- 16. जावा: एक स्ट्रिंग से यूटीएफ -8 हेक्स मान प्राप्त करें?
- 17. यूटीएफ -8
- 18. जेवीएम संपत्ति -डिफाइल.एन्कोडिंग = यूटीएफ 8 या यूटीएफ -8?
- 19. यूटीएफ -8
- 20. जावा में यूटीएफ -8 वर्ण एन्कोडिंग
- 21. यूटीएफ -8
- 22. केएसएच जांचें कि स्ट्रिंग
- 23. यूटीएफ -8
- 24. यूटीएफ -8
- 25. यूटीएफ -8
- 26. यूटीएफ -8
- 27. जांचें कि स्ट्रिंग में
- 28. jQuery: जांचें कि स्ट्रिंग
- 29. जांचें कि एक स्ट्रिंग
- 30. यूटीएफ -8
आप बाइट [] वैध एन्कोड किया गया है मतलब? – bestsss
ऐसा करने की सबसे आसान बात यह हो सकती है कि इसे डीकोड करें और इसे फिर से एन्कोड करें। जांचें कि आपको वही चीज़ मिलती है। यह लगभग हर मामले में सही होगा। –
@ पीटर जो हमेशा काम नहीं करेगा, क्योंकि कुछ पात्र बाइट्स के विभिन्न अनुक्रमों के साथ एन्कोड किए जा सकते हैं। बाइट्स के दोनों अनुक्रम सही होंगे, और समान वर्णों को एन्कोड करेंगे, लेकिन बाइट अलग हैं। – Jesper