forum.bitel.ru
http://forum.bitel.ru/

Создание счетов и кодировка XML
http://forum.bitel.ru/viewtopic.php?f=14&t=11261
Страница 1 из 1

Автор:  Steper [ 31 дек 2015, 15:33 ]
Заголовок сообщения:  Создание счетов и кодировка XML

Здравствуйте! Пытаюсь создавать счета, посылаю POST запрос с параметрами(module=bill&action=GenerateBills...). Среди прочих шлю параметр bills, куда строкой вставляю xml(Сейчас такой вариант
Код:
nameValuePairs.add(new BasicNameValuePair("bills", new String(xml.getBytes("UTF-8"),"cp1251")));
). Документы создаются, но как ни мудрил с кодировками, никак не могу добиться корректного отображения кириллицы. Подскажите, пожалуйста, как побороть?

Автор:  skn [ 31 дек 2015, 16:58 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

а xml у вас правильная?
какая в ней кодировка?
как запрос отсылаете?

Автор:  dimOn [ 31 дек 2015, 17:09 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

зачем вы вообще перекодируете?

Автор:  Steper [ 11 янв 2016, 14:34 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

skn писал(а):
а xml у вас правильная?
какая в ней кодировка?
как запрос отсылаете?

xml, думаю, правильная, ведь документ создаётся:
Код:
<bills><bill type="6" type_title="Счёт по расходам" cid="39905" summ="250.00" account_id="1"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="250.00" sumUnscaled="250.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><sub_bill  type="6" type_title="" cid="39906" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39907" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39909" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39910" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39911" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="40061" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="40087" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="40196" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ></bill></bills>

Про кодировку не совсем понимаю, это строка(String в Java), которую я засовываю в запрос(POST):
Код:
nameValuePairs.add(new BasicNameValuePair("bills", xml));

Вот этот код посылает запрос:
Код:
HttpPost request = new HttpPost(server);
      Credentials credentials = new UsernamePasswordCredentials(username, password);
      BasicScheme scheme = new BasicScheme();
      try {
         request.addHeader(scheme.authenticate(credentials, request, new BasicHttpContext()));
      } catch(AuthenticationException e) {
         logger.error("Bad auth: " + e.getMessage());
         result[1] = "Внутрення ошибка сервера: ошибка аутентификации.";
         return result;
      }
      try {
         request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      } catch (UnsupportedEncodingException e1) {
         logger.error("Can't get a response", e1);
         result[1] = "Ошибка протокола составления запроса.";
         return result;      }
      

      DefaultHttpClient client = new DefaultHttpClient();
      ResponseHandler<String> handler = new BasicResponseHandler();
      try {
         result[1] = client.execute(request, handler);

Автор:  Steper [ 11 янв 2016, 14:37 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

dimOn писал(а):
зачем вы вообще перекодируете?

Без перекодировки тоже вопросительные знаки вместо всех русских символов, отчаянно копал хоть куда-нибудь.
Код:
nameValuePairs.add(new BasicNameValuePair("bills", xml));

(xml здесь - это String)

Автор:  Steper [ 11 янв 2016, 20:23 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

В итоге получается, что я формирую в Java xml в виде строки для нужных мне документов, отправляю её в биллинг POST запросом, всё распознаётся хорошо, кроме русских символов(на их месте или каракули или вопросики). Уже всю голову сломал с этими кодировками(((

Автор:  dimOn [ 11 янв 2016, 22:59 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

вы сначала разберитесь в чём у вас проблема, в каком месте.

слишком мало данных, чтобы сделать какой-то вывод. найдите на каком именно этапе портится кодировка.

если у вас xml уже String (она через println распечатывается нормально? или выше откуда вывод с нормальной кириллицей - это непонятно) - зачем вы её перекодируете?
String в Java не имеет никаких кодировок по определению, т.к. это не набор байтов. если xml в виде String у вас корректная, то значит проблема не в БД и не в коде Java, а в дальнейшей судьбе этих данных, скорее всего на моменте POST запроса куда-то вы неправильно его кодируете.

Автор:  Steper [ 12 янв 2016, 15:03 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

Прошу прощения за беспокойство, в итоге проблема была в формировании запроса:
Код:
request.setEntity(new UrlEncodedFormEntity(nameValuePairs));

А нужно
Код:
request.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

Автор:  dimOn [ 12 янв 2016, 17:55 ]
Заголовок сообщения:  Re: Создание счетов и кодировка XML

ну как я и предположил, собственно

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/