неверный байт 2 из 2-байтовой последовательности UTF-8 - PullRequest
26 голосов
/ 11 марта 2010

Я пытаюсь разобрать файл XML с <?version = 1.0, encoding = UTF-8> но натолкнулся на сообщение об ошибке invalid byte 2 of 2-byte UTF-8 sequence. Кто-нибудь знает, что вызвало эту проблему?

Ответы [ 6 ]

21 голосов
/ 28 ноября 2010

Чаще всего это происходит из-за кормления ISO-8859-x (Latin-x, как Latin-1), но анализатор думает, что он получает UTF-8. Определенные последовательности символов латинского алфавита-1 (два последовательных символа с ударением или умляутами) образуют что-то, что недопустимо как UTF-8, и, в частности, такое, что на основе первого байта второй байт имеет неожиданные старшие биты.

Это может легко произойти, когда какой-то процесс выгружает XML с использованием Latin-1, но либо забывает вывести объявление XML (в этом случае парсер XML должен по умолчанию установить UTF-8, согласно XML спецификациям) ) или утверждает, что это UTF-8, даже если это не так.

5 голосов
/ 30 июня 2014

У меня была такая же проблема. Моя проблема заключалась в том, что я создал новый файл XML с помощью jdom и FileWriter (xmlFile) . FileWriter не удалось создать файл UTF-8. Вместо этого FileOutputStream (xmlFile) решил эту проблему.

5 голосов
/ 11 марта 2010

Либо парсер настроен на UTF-8, даже если файл закодирован иначе, либо файл объявлен как использующий UTF-8, но на самом деле это не так.

4 голосов
/ 28 июня 2014

Вы можете попытаться изменить кодировку символов по умолчанию, используемую String.getBytes (), на utf-8. Используйте параметр VM -Dfile.encoding = utf-8.

1 голос
/ 08 июля 2015

Для тех, кто все еще получает такую ​​ошибку.

поскольку UTF-8 используется, проверьте ваш xml-документ на наличие латинских букв или около того: У меня была такая же проблема, и причина была в том, что у меня было это:

<n:name>Åke Jógvan Øyvind</n:name>

Надеюсь, это поможет

0 голосов
/ 16 декабря 2015

У меня тоже была такая же проблема при попытке импортировать мой XML-файл в мой Java-инструмент.И я нашел хорошее решение для этого: 1. Откройте файл .xml с помощью Notepad ++, затем сохраните файл .xml как файл .rtf.Затем откройте этот файл в приложении WordPad.2. Сохраните файл .rtf как файл .txt, затем откройте его с помощью Блокнота и снова сохраните как файл .xml.При сохранении в блокноте в конце всплывающего окна обязательно выберите параметр «Кодировка: UTF-8».Это сработало для меня, надеюсь, это будет полезно и для вас.

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