我的应用程序编写了大量XML数据,随机编写了以下代码的最后一行:
// Prepare the DOM document for writing
Source source = new DOMSource(node);
// Prepare the output stream
Result result = new StreamResult(stream);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);
.. ..引发
javax.xml.transform.TransformerException: java.io.IOException: Detected invalid substitute UTF-16: da89 4f ?
(另外,我不知道为什么,但是这个例外是vm用我的语言提出的唯一一个例外,葡萄牙语,作为“Detectado substituto UTF-16inválido”,我把它翻译成“检测到无效的UTF” -16替代“)
另一个奇怪的事情是我在我的文本中使用的是UTF-8,而不是UTF-16,我已经检查过了。并且,我相信如果UTF是问题,它不会导致随机异常,因为我得到相同数量的文本转换为XML。
此异常难以重现,因为它不会一直发生,并且在将大量数据转换为XML时会发生。
知道这里发生了什么吗?
答案 0 :(得分:0)
从输入流构建源,而不是读者,让XML解析器找出字符集。
答案 1 :(得分:0)
我能想到的解决方法是让程序在失败时重新执行操作。由于难以复制,因此不应连续发生两次。