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