Java InputStream encoding/charset -


निम्न (उदाहरण) कोड चलाना

  import java.io. *; सार्वजनिक कक्षा परीक्षण {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) अपवाद फेंकता {बाइट [] buf = {-27}; InputStream = नए बाइटअरेइनपुटस्ट्रीम (buf) है; बफ़रेडरेडर आर = नया बफ़्टेड रीडर (नया इन्पुटस्ट्रीमरेडर (है, "आईएसओ -885 9 -1")); स्ट्रिंग s = r.readLine (); System.out.println ("test.java: 9 [बाइट] (चार)" + (चार) s.getBytes () [0] + "(int)" + (इंट) s.getBytes () [0]) ; System.out.println ("test.java:10 [char] (char)" + (चार) s.charAt (0) + "(int)" + (int) s.charAt (0)); System.out.println ("test.java11 नीचे स्ट्रिंग"); Println (रों); System.out.println ("test.java:13 स्ट्रिंग ऊपर"); }}  

मुझे यह आउटपुट देता है

 test.java:9 [बाइट] (चार)? (Int) 63 test.java:10 [वर्ण] (चार)? (Int) 229 test.java11 नीचे स्ट्रिंग? Test.java:13 ऊपर स्ट्रिंग 

मैं लाइन -9 प्रिंटआउट में सही बाइट मान (-27) को कैसे बरकरार रखूं? और परिणामस्वरूप system.out.println (s) कमांड (å)।

यदि आप बाइट मूल्यों को बरकरार रखना चाहते हैं, तो रीडर पर बिल्कुल उपयोग न करें, आदर्श रूप से पाठ में मनमानी बाइनरी डेटा का प्रतिनिधित्व करने के लिए और बाद में इसे द्विआधारी डेटा में बदल दिया जाए, आपको बेस 16 या बेस 64 एन्कोडिंग का उपयोग करना चाहिए।

हालांकि, जब आप s.getBytes () उस डिफ़ॉल्ट वर्ण एन्कोडिंग का उपयोग कर रहा है, जो स्पष्ट रूप से यूनिकोड वर्ण U + 00E5 को शामिल नहीं करता है।

यदि आप s.getBytes ("ISO- 8859-1 ") s.getBytes () के बजाय हर जगह आपको संदेह है कि आपको सही बाइट मूल्य वापस मिल जाएगा ... लेकिन आईएसओ -885 9-1 पर निर्भर होने के लिए यह थोड़े है गंदा आईएमओ।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -