У меня очень странная ошибка (сообщение: 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
печатает искаженные символы.