java - 随机TransformerException,如何解决?

标签 java xml exception random

我的应用程序写入了大量的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/

相关文章:

xml - 多流维基百科转储

php - 在php中将XML文件内容作为字符串获取

c++ - 我们应该使用标准库中的异常类型吗?

java - 我应该抛出什么异常

java - Javauto编译失败(入门)

java - 使用 StringBuilder 时转义引号

java - ye olde "org.hibernate.NonUniqueObjectException"...我被这个难住了

java - 如何创建一个识别 AbsoluteLayout 的 jar 而不抛出 NoClassDefFoundError?

javascript - 正则表达式删除标记Notepad++内的特定文本

c# - 在我进入 .NET 中的 finally block 之前是否有可能检测到是否发生了异常?