我的應用程序寫了很多XML數據,並隨機下面這段代碼的最後一行:Random TransformerException,如何解決它?
// 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);
..throws ..
javax.xml.transform.TransformerException: java.io.IOException: Detected invalid substitute UTF-16: da89 4f ?
(另外,我不知道爲什麼,但這個例外是唯一一個在我的語言,葡萄牙語中由vm引發的「Detectado substituto UTF-16inválido」,我把它翻譯成「Detected invalid UTF-16 substitute」)
另一個奇怪的事情是,我在我的文本中使用了UTF-8,而不是UTF-16已經檢查過了。而且,我相信如果UTF是問題所在,它不會導致隨機異常,因爲我得到的文本數量相同以轉換爲XML。
這個異常很難重現,因爲它不會總是出現,並且在將大量數據轉換爲XML時發生。
任何想法這裏發生了什麼?
因此,如果您多次轉換同一文檔,它甚至不會重複發生? – 2010-06-23 21:46:36
utf-16由java內部使用,char也是一個無符號16位int。 在你的來源的某個地方必須有一個角色沒有替代品。 此外,Java 1.4使用Unicode標準3.0版本,1.3使用2.1版本。這些版本通常不支持補充字符。由於1.5應該支持,所以使用版本4。 你在應用程序中生成源代碼還是來自外部文件? – Redlab 2010-06-23 22:14:20
我每次開始創建應用程序時都遇到類似的問題(儘管出現不同的錯誤)。從控制檯(shell腳本),但從Eclipse啓動時沒有問題。 您是否正在開發應用程序。每次都一樣? – 2010-06-24 01:39:25