मैं UTF-8 एन्कोडिंग में धारा से कुछ डेटा को पढ़नेजावा-स्ट्रिंग टूटा एन्कोडिंग
String line = new String(byteArray, "UTF-8");
फिर कुछ परिणाम को
int startPos = line.indexOf(tag) + tag.length();
int endPos = line.indexOf("/", startPos);
खोजने की कोशिश और इसे काट
String name = line.substring(startPos, endPos);
अधिकांश में मामले यह ठीक काम करता है, लेकिन कुछ बार परिणाम टूट गया है। उदाहरण के लिए, "гордунни"
जैसे इनपुट नाम के लिए मुझे "горд��нни"
, "горду��ни"
, "г��рдунни"
आदि जैसे मान प्राप्त हुए ऐसा लगता है कि सरोगेट जोड़े कुछ कारणों से यादृच्छिक रूप से टूटा हुआ है। मुझे इसे 1000 में से 4 बार मिला।
इसे कैसे ठीक करें? क्या मुझे indexOf() + substring() के बजाय अन्य स्ट्रिंग विधियों का उपयोग करने या मेरे परिणाम पर कुछ एन्कोडिंग/डिकोडिंग जादू का उपयोग करने की आवश्यकता है?
क्या यह समस्या लिनक्स पर है? आप "टूटी हुई" रेखाएं कहां देखते हैं? मुझे एसडब्ल्यूटी टेबल में भी यही समस्या थी, लेकिन जब मैं एसडब्ल्यूटी टेक्स्ट या लेबल में यह स्ट्रिंग भेजता हूं तो यह सही प्रदर्शित होता है। सबसे अधिक संभावना एक प्रदर्शित मुद्दा है। – Nicolai
यह सच है कि 'इंडेक्सऑफ' और 'सबस्ट्रिंग' विधियां कोड बिंदुओं पर काम करती हैं, इसलिए संभावित रूप से वे सरोगेट जोड़े को तोड़ सकते हैं, लेकिन 'гордунни' में कोई सरोगेट जोड़े नहीं हैं! क्या आपको यकीन है कि पाठ को शुरू करने के लिए सही ढंग से पढ़ा गया था? – Joni
क्या यह वही परिणाम उत्पन्न करता है यदि आप कमांड लाइन में -Dfile.encoding = UTF-8 जोड़ते हैं? – Alcanzar