SAXParseException: недопустимый байт 2 3-байтовой последовательности UTF-8 - PullRequest
0 голосов
/ 11 декабря 2018

У меня очень странная ошибка (сообщение: org.xml.sax.SAXParseException Invalid byte 2 of 3-byte UTF-8 sequence.). Позиция, в которой я получаю эту ошибку, - это позиция, где появляется первый сомнительный символ («é» в моем случае).Я пытаюсь разобрать XML-файл, используя javax xml и средства проверки.Я использую два сервера wildfly, которые общаются друг с другом, отправляя и получая XML-файлы.Проблема в том, что всякий раз, когда я получаю файл ответов, что-то не так с кодировкой.Причина, по которой я использую String вместо InputStream для чтения объекта ответа, заключается в том, что я хочу использовать тело ответа несколько раз и не хочу использовать IOUtils позже.

Response response = webTarget.request()
            .post(Entity.entity(xmlBody, MediaType.APPLICATION_XML));
String responseBody = response.readEntity(String.class);

Если я использую здесь System.out.println(responseBody), мои символы (á, ű, é, ő, ú, ö, ü, í) из полученного xml будут отображаться не как символы UTF-8.В моем примере xmls, запрос отправителя и кодировка консолей журнала установлены в UTF-8, поэтому это может и не быть проблемой.Я думаю, что эта проблема может быть вызвана двумя причинами:

  • Связь с Wildfly каким-то образом разрушает кодировку сообщения
  • Каким-то образом я также должен установить кодировку в точке приема.Например, (response.setEnc(encoding)).

Забавный факт: когда я пытаюсь отладить свои файлы, компоненты файлов работают правильно, даже когда System.out печатает искаженные символы.

...