Один из наших провайдеров иногда отправляет потоки XML, которые помечены как документы в кодировке UTF-8, но содержат символы, которые не включены в кодировку UTF-8. Это заставляет синтаксический анализатор генерировать исключение и останавливать построение объекта DOM, когда встречаются эти символы:
DocumentBuilder.parse(ByteArrayInputStream bais)
выдает следующее исключение:
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
Есть ли способ «перехватить» эти проблемы на раннем этапе и избежать исключения (то есть найти и удалить эти символы из потока)? То, что я ищу, - это вариант «наилучшего усилия» для ошибочно закодированных документов. Правильное решение, очевидно, состояло бы в том, чтобы атаковать проблему в источнике и убедиться, что доставляются только правильные документы, но каков хороший подход, когда это невозможно?