एक "UTF-8 स्ट्रिंग" जावा में जैसी कोई चीज नहीं है। सब कुछ यूनिकोड में है।
जब आप कोई एन्कोडिंग निर्दिष्ट किए बिना String.getBytes()
कहते हैं, कि मंच डिफ़ॉल्ट एन्कोडिंग का उपयोग करता है - कि लगभग हमेशा एक बुरा विचार है।
आपको कुछ करने की यहाँ सही पात्रों को पाने के लिए नहीं करना चाहिए था - अनुरोध यह सब आप के लिए से निपटने की जानी चाहिए। यदि ऐसा नहीं कर रहा है, तो संभावना है कि यह पहले से ही खो गया डेटा है।
क्या आप वास्तव में गलत क्या हो रहा है इसका एक उदाहरण दे सकते हैं? आपको प्राप्त होने वाली स्ट्रिंग में वर्ण के यूनिकोड मान निर्दिष्ट करें (उदा। toCharArray()
का उपयोग करके और फिर प्रत्येक char
को int
पर परिवर्तित करें) और जो आपको प्राप्त होने की उम्मीद है।
संपादित करें:
public static void dumpString(String text) {
for (int i = 0; i < text.length(); i++) {
System.out.println(i + ": " + (int) text.charAt(i));
}
}
ध्यान दें कि कि दशमलव प्रत्येक यूनिकोड वर्ण का मूल्य दे देंगे: इस का निदान करने के लिए, कुछ इस तरह का उपयोग करें। यदि आपके पास एक आसान हेक्स लाइब्रेरी विधि है, तो आप इसका उपयोग हेक्स मान देने के लिए कर सकते हैं। मुख्य बिंदु यह है कि यह स्ट्रिंग में यूनिकोड वर्णों को डंप करेगा।
स्रोत
2010-10-29 07:18:36
उदाहरण के लिए इस चरित्र 告 मैं 229 145 138 इस दशमलव प्रतिनिधित्व whichis http://www.ansell-uebersetzungen.com/gbuni.html के अनुसार को सही पाने परिवर्तित किया जा करने की जरूरत है क्योंकि यह इस हेक्स प्रतिनिधित्व है: E5 91 8 ए तो अब मुझे इसे यूनिकोड में परिवर्तित करने की आवश्यकता है। I –
तो मेरी राय में अनुरोध सही वर्ण भेजता है लेकिन मैं इसे जावा में नहीं पढ़ सकता, इसे यूनिकोड –
@Rob में परिवर्तित करने की आवश्यकता है: नहीं, यह स्ट्रिंग में यू + 544 ए के रूप में दिखाई देना चाहिए। आपके द्वारा उद्धृत हेक्स प्रस्तुति यूटीएफ -8 प्रतिनिधित्व है - जो कभी भी स्ट्रिंग में क्या नहीं होने वाला है। आप कहते हैं कि आप "22" 145 138 प्राप्त करते हैं - जब आप क्या करते हैं? मैं कुछ निदान कोड के साथ अपना जवाब संपादित करूंगा। –