Недопустимый байт 2 в 2-байтовой последовательности UTF-8: XML сохранен как строковая переменная - PullRequest
0 голосов
/ 02 июля 2018

Я получаю следующую ошибку из-за латинского текста в моем XML.

Недопустимый байт 2 из 2-байтовой последовательности UTF-8: XML сохранен как строковая переменная

Мой XML записан в строковую переменную (я не импортирую файл). Я пытался установить кодировку "UTF-8", но, возможно, я сделал это неправильно.

Можете ли вы помочь, пожалуйста?

Мой код:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
InputStream inputStream = new ByteArrayInputStream(GET_XML.getBytes());
Document doc = dBuilder.parse(inputStream);
doc.getDocumentElement().normalize();

1 Ответ

0 голосов
/ 02 июля 2018

Вы видите эту ошибку, потому что вы отправляете xml, содержащий символы ISO-8859-1 (он же Latin-1) без правильного объявления XML:

<?xml version='1.0' encoding='ISO-8859-1' standalone='no' ?>

У вас есть два варианта, либо исправить это, используя xml с указанным выше объявлением.
ИЛИ принудительно UTF-8 во время преобразования байтов.

new ByteArrayInputStream(GET_XML.getBytes(StandardCharsets.UTF_8));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...