org.xml.sax.SAXParseException: недопустимый байт 2 3-байтовой последовательности UTF-8

Я сталкиваюсь с указанной выше ошибкой в ​​производственной среде, тогда как в UAT процесс прошел нормально.

Мне было интересно, связана ли эта ошибка с загрузкой файла jar. Мы используем веб-методы, и вышеуказанная ошибка произошла для службы Java.


person abhijith501    schedule 26.10.2012    source источник
comment
Не могли бы вы дать больше информации? Возможно, полная трассировка стека, может быть, какой-то код, может быть, файл примера? Кроме того, если бы вы могли выяснить, где в образце файла обнаружен недопустимый символ... Наконец, попробуйте распространить производственный файл на UAT и посмотреть, сохраняется ли ошибка.   -  person durron597    schedule 26.10.2012
comment
‹Описание›ah kom craquelé turq 12cm‹/Описание› Приведенный выше xml анализируется в UAT, в то время как тот же файл не работает в рабочей среде...   -  person abhijith501    schedule 30.10.2012
comment
Я нашел точную причину этой проблемы. Дело в том, что локали и символы по умолчанию присутствуют в производстве, и принятие отличается. Я использовал эту строку deEncoding= +Charset.defaultCharset();String locale=+Locale.getDefault (); чтобы найти локали. Кодировки и локали разные. Я жестко закодировал значение UTF-8 в byteArray = inputInXML.getBytes (UTF-8); и результат - успех   -  person abhijith501    schedule 14.11.2012
comment
stackoverflow.com/q/15545720/923560   -  person Abdull    schedule 03.02.2016


Ответы (2)


Наиболее вероятный сценарий заключается в том, что файл имеет кодировку ISO-8859-1 и содержит расширенный код ASCII (символы от 0x80 до 0xff включительно). Синтаксический анализатор ожидает UTF-8, и один из расширенных символов интерпретируется как начало 3-байтовой последовательности, но за ним не следует байт, допустимый в этой позиции.

person Jim Garrison    schedule 26.10.2012
comment
Я нашел точную причину этой проблемы. Дело в том, что локали и символы по умолчанию присутствуют в производстве, и принятие отличается. Я использовал эту строку deEncoding= +Charset.defaultCharset();String locale=+Locale.getDefault (); чтобы найти локали. Кодировки и локали разные. Я жестко закодировал значение UTF-8 в byteArray = inputInXML.getBytes (UTF-8); и результат - успех - person abhijith501; 14.11.2012

Загружаемый файл xml имеет неправильную кодировку: взгляните на файлы производственной среды, по крайней мере один из них не является UTF-8.

person Aubin    schedule 26.10.2012
comment
Спасибо за ответ. Я проверил все файлы, и все они закодированы в кодировке UTF-8... У меня есть сомнения относительно файлов jar. Относится ли это исключение к jar-файлам. - person abhijith501; 26.10.2012
comment
Являются ли банки одинаковыми в производстве и в тесте? Посмотрите на различия между двумя env. JAR может содержать файл XML, проанализированный во время выполнения. - person Aubin; 26.10.2012
comment
castor-xml-schema-1.2.jar для чего нужен этот файл jar. - person abhijith501; 30.10.2012
comment
Castor обеспечивает привязку Java к XML, устойчивость Java к SQL и многое другое. - person Aubin; 30.10.2012
comment
Извлеките его содержимое в каталог, добавьте его в путь к классам, удалите банку из пути к классам, снова запустите и вставьте полный стек исключений, и, возможно, мы сможем вам помочь... - person Aubin; 30.10.2012
comment
Я нашел точную причину этой проблемы. Дело в том, что локали и символы по умолчанию присутствуют в производстве, и принятие отличается. Я использовал эту строку deEncoding= +Charset.defaultCharset();String locale=+Locale.getDefault (); чтобы найти локали. Кодировки и локали разные. Я жестко закодировал значение UTF-8 в byteArray = inputInXML.getBytes (UTF-8); и результат - успех - person abhijith501; 14.11.2012