2012-06-05 14 views
11

का संदिग्ध व्यवहार मैं वेब सेवा के लिए एक बड़ी स्ट्रिंग अपलोड कर रहा हूं। स्ट्रिंग में नया लाइन वर्ण होता है जिसे "\ n" के रूप में लिखा जाता है।नई लाइन वर्ण

05/06/2012 11:35:43 AM- DB exists, transferring data\n05/06/2012 
11:48:20 AM- loadUserSpinners, cursor.getCount()=2\n05/06/2012 
11:48:20 AM- Battery: 50%\n05/06/2012 11:48:20 AM- ITEM SELECTED: 0 

उपरोक्त डेटा स्ट्रिंग JsonArrObj में संग्रहीत है: डेटा जैसे कुछ बात लग रहा है। डेटा/स्ट्रिंग अपलोड करने के लिए, मैं निम्नलिखित कोड का उपयोग कर रहा:

HttpParams httpParameters = new BasicHttpParams(); 
    int timeoutConnection = 360000; //6 minutes 
    HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); 
    int timeoutSocket = 420000; //7 minutes 
    HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 
    HttpClient httpClient = new DefaultHttpClient(httpParameters); 

    JSONArray jsonParams = new JSONArray(); 
    Object[] params={IPAddress,Database,DbName,DbPassword,JsonArrObj}; 
    for (int i = 0; i < params.length; i++) { 
     jsonParams.put(params[i]); 
    } 

    JSONObject jsonRequest = new JSONObject(); 
    jsonRequest.put("id", Id); 
    jsonRequest.put("method", FunctionName); 
    jsonRequest.put("params", jsonParams); 
    JSONEntity entity = new JSONEntity(jsonRequest); 
    entity.setContentType("application/json; charset=utf-8");  
    HttpPost request = new HttpPost(URL); 
    request.setEntity(entity); 

    HttpResponse response = httpClient.execute(request); 
    StatusLine statusLine = response.getStatusLine(); 
    int statusCode = statusLine.getStatusCode(); 
    if (statusCode == 200) { 
     HttpEntity httpEntity = response.getEntity(); 
     InputStream content = httpEntity.getContent(); 

     BufferedReader reader = new BufferedReader(
       new InputStreamReader(content,"iso-8859-1"),8); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 

      LogE("result line: "+line); 
      String str=convertString(line); 
      parseJson(str); 
     } 
     content.close(); 
    } 

स्ट्रिंग सफलतापूर्वक अपलोड किया गया है। मुझे जिस समस्या का सामना करना पड़ रहा है वह है: जबकि स्ट्रिंग को jsonParams में परिवर्तित किया जा रहा है, स्ट्रिंग डेटा में "\n" परिणामस्वरूप सर्वर के पक्ष में "\\n" में परिवर्तित हो जाता है, यह नई लाइन के स्थिर में एक छोटा बॉक्स दिखाता है।

जब मैं नोटपैड एप्लिकेशन में यह स्ट्रिंग खोलता हूं, तो यह छोटे बक्से प्रदर्शित करता है। लेकिन जब मैं इसे वर्डपैड ऐप में खोलता हूं, तो टेक्स्ट एक नई लाइन पर प्रदर्शित होता है। मेरे अनुसार, मैंने सही-सही "सामग्री-प्रकार" या एन्कोडिंग दर्ज की हो सकती है। कृपया इसके लिए एक समाधान का सुझाव दें। जबकि खुद

डेटा जो jsonParams- jsonArrObj में भेज दिया जाता है अपलोड करने ...

JsonArrObj= URLEncoder.encode(JsonArrObj, "utf-8"); त्रुटि दिया अंत में लगता है कि:

05\/06\/2012 04:05:52 PM- DB exists, transferring 
data\\n05\/06\/2012 04:32:56 PM- loadUserSpinners, 
cursor.getCount()\\u003d2\\n05\/06\/2012 04:32:56 PM- Battery: 
50%\\n05\/06\/2012 04:32:56 PM- ITEM SELECTED: 0 
+1

क्या आपने "\ n" के सामने अतिरिक्त "\" डालने का प्रयास किया है? "\ n" के बजाय "\\ n" है? –

+0

@ वी.पी. वर्मा, अगर मैं एक "\\ n" डालता हूं, तो मैं वेब-व्यू में टेक्स्ट प्रदर्शित नहीं कर पाऊंगा। साथ ही, समस्या "\ n" को संरक्षित करना है। एन्कोडर "\ n" को गैर-वांछित "\\ n" में परिवर्तित कर रहा है .. – Pallavi

+0

@ user370305 हाँ .. – Pallavi

उत्तर

0

अरे तुम क्यों यूनिकोड मान \ N के रूप में के लिए उपयोग नहीं करते हैं और कोई अन्य चरित्र जो इस समस्या को बना रहा है इस यू + 002FU + 006E

+0

ठीक है ... मैं इसे आज़मा दूंगा। – Pallavi

1

ठीक है, एन्कोडर आपके न्यूलाइन अक्षरों से बच निकलता है। यदि आप न्यूलाइन वर्णों को सही तरीके से परिवहन करना चाहते हैं, तो आप पूरे स्ट्रीम को बेस 64 के साथ एन्कोड कर सकते हैं। यदि आपका लक्ष्य ओएस (डेटा भेजने के लिए) विंडोज है तो आपको \ r \ n का उपयोग करना चाहिए, यदि मैक तो \ r अगर unix \ linux तो \ n। एन्कोडिंग डेटा के बाद एन्कोडेड भेजने और दूसरी तरफ इसे डीकोड करने का प्रयास करें। बेस 64 के लिए श्री Google आपको विश्वास दिलाएंगे।

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