我的应用程序写入了大量的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 ?
(另外,我不知道为什么,但这个异常是虚拟机以我的语言葡萄牙语提出的唯一一个异常,如“Detectado substituto UTF-16 inválido”,我将其翻译为“Detected invalid UTF” -16替补”)
另一个奇怪的事情是我在我的文本中使用UTF-8,而不是UTF-16,我已经检查过了。而且,我相信如果 UTF 是问题所在,它不会导致随机异常,因为我得到了相同数量的文本来转换为 XML。
此异常很难重现,因为它并不总是发生,而是在将大量数据转换为 XML 时发生。
知道这里发生了什么吗?
最佳答案
从输入流而不是读取器构建源代码,并让 XML 解析器找出字符集。
关于java - 随机TransformerException,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3105768/