Im, отправляющий XML с HttpPost на сервер. Это было хорошо, и я делал это успешно в других частях проекта.StringBuilder append String breaks UTF 8
Im используя StringBuilder для создания запроса XML, но так как я добавление строк в качестве данных к узлам, я получаю сообщение об ошибке от синтаксического анализа на сервере:
Invalid byte 2 of 2-byte UTF-8 sequence.
Когда я вхожу запрос и проверить его в валидаторе w3c xml, ошибок нет.
Это отрывок (весь метод будет большим и имеет конфиденциальные данные) из моего StringBuilder метода:
StringBuilder baseDocument = new StringBuilder();
baseDocument.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><setDisposalRequest><customer><company><![CDATA[");
baseDocument.append(company);
baseDocument.append("]]></company>");
baseDocument.append("<firstName><![CDATA[");
baseDocument.append(name);
baseDocument.append("]]></firstName>");
...
Как только я заменить строку вары я добавить с закодированными строками, все работает отлично
т.е.
baseDocument.append(name);
в
baseDocument.append("name");
Все строки имеют значения, не являющиеся нулевыми или пустыми!
До запроса я установить StringEntity в XML
se.setContentType("application/xml");
Что мне не хватает?!?
ok thx, сделаю. Но homecome работает, когда я жестко кодирую строки, как в моем примере? – M4tchB0X3r
Если вы отправляете '' name '', то использование ISO-88591- * не является проблемой, потому что кодировка UTF-8 и кодировка ISO-8859-1 этой строки одинаковы! (как верно для всех строк, которые кодируются в ASCII). Только если вы используете символы, отличные от ASCII (такие как ä, ö, ß и некоторые знаки препинания), будет разница. –
Sweet, thx. Передача параметра UTF-8 в StringEntity сделала трюк. 'se = new StringEntity (reqString, "UTF-8"); И будут умлауты, так как приложение будет для Австрии. Я беру с вашего имени ur от Ger или At;) – M4tchB0X3r