Неоднозначное поведение нового символа линии

Я загружаю большую строку в веб-сервис. Строка содержит новый символ строки, который записывается как «\ 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" в результате на стороне сервера отображается небольшая коробка вместо новых линия.

Когда я открываю эту строку в приложении NOTEPAD, она отображает небольшие поля. Но когда я открываю его в приложении WORDPAD, текст отображается в новой строке. По-моему, я мог бы ввести корректный «контент-тип» или кодировку. Пожалуйста, предложите решение для этого же.

JsonArrObj= URLEncoder.encode(JsonArrObj, "utf-8"); Дал ошибку при загрузке себя …

Данные, которые отправляются в jsonParams- jsonArrObj конце концов выглядят так:

 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 

Ну, кодер избегает ваших символов новой строки. Если вы хотите правильно переносить символы новой строки, вы можете кодировать весь поток с помощью base64. Если ваша целевая os (для отправки данных) – это Windows, тогда вы должны использовать \ r \ n, если mac then \ r, если unix \ linux then \ n. После кодирования данных попробуйте отправить закодированные и декодировать их с другой стороны. Для base64 г-н Google убедит вас.

Эй, почему бы вам не использовать значения Unicode для \ n как и любого другого символа, который создает эту проблему, такую ​​как U + 002FU + 006E

Intereting Posts
Диалоги Android 4.1.2 называются дважды Не удается получить appView после обновления до кордовы 5.1 из 3.4 Примеры презентаторов / контроллеров модели андроидов Нарисовать текст поверх растрового изображения не удалось Сообщения о дублировании облачных сообщений Firebase Как определить, какое приложение вызвало BugReport на моем Android-телефоне Отключить кнопку возврата на временное время Как бороться с DeadObjectException при убитой службе? Избегание ошибки FAILED BINDER TRANSACTION при обновлении множества растровых изображений виджета Юридические уведомления API Карт Google v2 Строка слишком длинная Android: получите текущее местоположение от лучшего поставщика Значок навигации панели инструментов не установлен Как выполнить SQLite-запрос в приложении Android? Android / FBReaderJ / gen уже существует, но не является исходной папкой. Преобразовать в исходную папку или переименовать ее Как отображать эффект градиента сверху вниз в android