我们的某些供应商有时会发送被标记为UTF-8编码文档的XML源,但其中包含不属于UTF-8字符集的字符。当解析器遇到这些字符时,会抛出异常并停止构建DOM对象:
DocumentBuilder.parse(ByteArrayInputStream bais)
抛出以下异常:
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
有没有一种方法可以尽早“捕获”这些问题并避免异常(即从流中查找并删除这些字符)?我正在寻找一种针对错误编码文档的“尽力而为”的后备方案。显然,正确的解决方案是从源头解决问题,并确保只传递正确的文档,但当这不可能时,有什么好的方法呢?