Преобразование символов в SAXParser - PullRequest
0 голосов
/ 08 апреля 2009

У меня есть проблема ... очень странная, не могли бы вы, пожалуйста, направить.

Исходное сообщение: Kevätsunnuntaisin lentää

Поток данных HttpConnector -> WSDLConnector -> в базовую систему

Ниже приводится кодировка первых 7 символов

4b 65 76 c3 a4 74 73 75 - В коннекторе Http - XML-код запроса имеет кодировку UTF-8

4b 65 76 a3 74 73 75 - в разъеме WSDL -

InputSource inputSource = new InputSource(myInputStream);
inputSource.setEncoding("UTF-8");

parser.parse(inputSource);

Исходная строка преобразуется в Kev £ tsunnuntaisin, предоставленный £ £. Также происходит потеря байта.

Не могли бы вы указать мне, где я иду не так? Что я должен сделать, чтобы избежать этого преобразования символов?

Спасибо за вашу помощь !!!

1 Ответ

1 голос
/ 09 апреля 2009

Это очень просто: данные в myInputStream не кодируются как UTF-8, следовательно, декодирование завершается неудачей.

Я предполагаю, что вы сохраняете выходные данные коннектора HTML в виде строки, а затем используете их в качестве входных данных для коннектора WSDL. В строке данные представлены в юникоде, а не в кодировке UTF-8. Используйте String.getBytes('UTF-8'), чтобы получить массив байтов с правильной кодировкой.

Что касается всех проблем с кодировкой: всегда сообщайте компьютеру, с какой кодировкой он должен работать, вместо того, чтобы надеяться, что он угадает правильно. У байтов нет кодировки, и компьютер не телепатичен :) И я надеюсь, что этого никогда не будет ...

...