2017-12-20 73 views
6

मैं जो slovenian वर्ण हैं json फ़ाइल डाउनलोड करने के लिए कोशिश कर रहा हूँ की विशेष वर्ण डाउनलोड करने के लिए, एक स्ट्रिंग के रूप json फाइल को डाउनलोड जब मैं विशेष वर्ण के रूप में json डेटा में नीचे निर्दिष्ट हो रही हैकैसे स्ट्रिंग फ़ाइल जो स्लोवेनिया

"send_mail": "Po�lji elektronsko sporocilo.", 
"str_comments_likes": "Komentarji, v�ecki in mejniki", 

कोड जो मैं

URL url = new URL(f_url[0]); 
URLConnection conection = url.openConnection(); 
conection.connect(); 
try { 
    InputStream input1 = new BufferedInputStream(url.openStream(), 300); 
    String myData = ""; 
    BufferedReader r = new BufferedReader(new InputStreamReader(input1)); 
    StringBuilder totalValue = new StringBuilder(); 
    String line; 
    while ((line = r.readLine()) != null) { 
     totalValue.append(line).append('\n'); 
    } 
    input1.close(); 
    String value = totalValue.toString(); 
    Log.v("To Check Problem from http paramers", value); 
} catch (Exception e) { 
    Log.v("Exception Character Isssue", "" + e.getMessage()); 
} 

उपयोग कर रहा हूँ मैं कैसे ठीक से डाउनलोड पात्रों पाने के लिए जानना चाहते हैं।

+0

यदि आप पहले से नहीं हैं तो [इस सवाल] (https://stackoverflow.com/questions/15737554/issue-while-downloading-file-with-special-character) पर एक नज़र डालें। – ADM

+0

[डीकोडिंग यूटीएफ -8 स्ट्रिंग का संभावित डुप्लिकेट, फिर इसे स्लोवाकियाई वर्णमाला के लिए 885 9-2 में एन्कोडिंग] (https://stackoverflow.com/questions/46521867/decoding-utf-8-string-then-encoding-it-in -8859-2-के लिए-स्पष्टीकरण-वर्णमाला) – R2R

+0

मैंने यूटीएफ -8 या 885 9-2 में बदलने की कोशिश की, कुछ भी काम नहीं करता है, केवल जो मैं देखता हूं उसे बदलता हूं 885 9 -2 चरित्र से [] में बदल जाता है। – Rakesh

उत्तर

0

मैं अंत में इस तरह से जो मुझे

InputStream इनपुट 1 = नए BufferedInputStream (कनेक्शन के टूटने के लिए काम किया पाया।getInputStream(), 300);

BufferedReader आर = नया BufferedReader (नया इनपुटस्ट्रीम रीडर (इनपुट 1, "विंडोज -1252"));

मुझे इस विंडोज़ -1252 द्वारा एंड्रॉइड एप्लिकेशन फ़ोल्डर के एसेट फ़ोल्डर में जेसन फ़ाइल डालने से पता चला, जहां यह ऊपर निर्दिष्ट जैसे विशेष वर्ण दिखाए, वहां यह एटीओडी -8 में एन्कोडिंग बदलने के लिए ऑटो सुझाव विकल्प दिखाए, आईएसओ -885 9 -1, एएससीआईआई और विंडोज -1252, इसलिए मैं विंडोज -1252 में बदल गया, जो एंड्रॉइड स्टूडियो में काम करता था जिसे मैंने अपने कोड में दोहराया, जो काम करता था।

1

जब इस लाइन पर InputStreamReader बनाने:

 BufferedReader r = new BufferedReader(new InputStreamReader(input1)); 

इस तरह निर्माता को चारसेट भेजें:

में जबकि पाश काम कर सकते हैं
 BufferedReader r = new BufferedReader(new InputStreamReader(input1), Charset.forName("UTF_8")); 
+0

अद्यतन किया है यह भी काम नहीं कर रहा है। – Rakesh

2

डिकोडिंग लाइन। इसके अलावा, आप IOException

URL url = new URL(f_url[0]); 
try { 
    URLConnection conection = url.openConnection(); 
    conection.connect(); 
    InputStream input1 = new BufferedInputStream(url.openStream(), 300); 
    String myData = ""; 
    BufferedReader r = new BufferedReader(new InputStreamReader(input1)); 
    StringBuilder totalValue = new StringBuilder(); 
    String line; 
    while ((line = r.readLine()) != null) { 
     line = URLEncoder.encode(line, "UTF8"); 
     totalValue.append(line).append('\n'); 
    } 
    input1.close(); 
    String value = totalValue.toString(); 
    Log.v("To Check Problem from http paramers", value); 
} catch (Exception e) { 
    Log.v("Exception Character Isssue", "" + e.getMessage()); 
} 
+0

यह पहले से ही कोशिश/पकड़ ब्लॉक में है – Rakesh

2

यह पूरी तरह स्पष्ट नहीं है तुम क्यों Android के JSONObject वर्ग (और संबंधित वर्ग) उपयोग नहीं कर रहे के मामले में try catch ब्लॉक में अपने कनेक्शन जोड़ना चाहिए। आप इस कोशिश कर सकते हैं, हालांकि:

String str = new String(value.getBytes("ISO-8859-1"), "UTF-8"); 

लेकिन क्या तुम सच में अपने आप को

3

आप UTF-8 में स्ट्रिंग बाइट्स सांकेतिक शब्दों में बदलना करने की जरूरत है पार्स करने के बजाय JSON पुस्तकालयों का उपयोग करना चाहिए। कृपया निम्नलिखित कोड जांचें:

String slovenianJSON = new String(value.getBytes([Original Code]),"utf-8"); 
JSONObject newJSON = new JSONObject(reconstitutedJSONString); 
String javaStringValue = newJSON.getString("content"); 

मुझे उम्मीद है कि यह आपकी मदद करेगा!

1

समस्या चरित्र प्रति विकिपीडिया स्लोवेनियाई वर्णमाला UTF-8 के द्वारा समर्थित, UTF-16, आईएसओ/आईईसी 8859-2 (लैटिन -2) के रूप में सेट में

है। सर्वर में कौन सा चरित्र सेट इस्तेमाल किया गया है, और एन्कोडिंग के लिए उसी वर्ण सेट का उपयोग करें।

अगर यह UTF-8 एनकोड इस

 BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream), Charset.forName("UTF_8")); 

अगर आप deffrent वर्ण सेट का उपयोग करें कि था की तरह है।

1

मुझे स्वीडिश पात्रों के कारण एक ही समस्या का सामना करना पड़ा है।

इसलिए मैंने इस मुद्दे को हल करने के लिए BufferedReader का उपयोग किया है। मैंने StandardCharsets.ISO_8859_1 का उपयोग करके प्रतिक्रिया को परिवर्तित कर दिया है और उस प्रतिक्रिया का उपयोग किया है। कृपया नीचे मेरा उत्तर पाएं।

BufferedReader r = new BufferedReader(new InputStreamReader(response.body().byteStream(), StandardCharsets.ISO_8859_1)); 
    StringBuilder total = new StringBuilder(); 
    String line; 

    while ((line = r.readLine()) != null) 
    { 
     total.append(line).append('\n'); 
    } 

और इस total.toString() का उपयोग करें और इस प्रतिक्रिया को मेरी कक्षा में सौंपा।

मैंने वेब सेवा को कॉल करने के लिए रेट्रोफिट का उपयोग किया है।

संबंधित मुद्दे