2013-04-27 80 views
0

標題相當多說了。將字節保存到xmlfile。無效的Unicode字符

我計算SHA1哈希的文本文件,到目前爲止,一切順利。我把它寫在.xml文件,通過只使用一個正常的FileOutputStream中。

FileOutputStream fos = new FileOutputStream(out.xml); 
fos.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>".getBytes()); 
fos.write("<Digest xmlns=\"http://testnamespace\"".getBytes()); 
fos.write(getFileHash("C:\\myfile.txt")); 
fos.write("</Digest>".getBytes()); 
fos.flush(); 
fos.close(); 

如果我現在想解析XML作爲DOM,我總是得到「無效的Unicode字符0×06,0x1b」例外,這取決於我通過什麼樣的輸入文件。

我試過至今: 不同的包裝器的FILESTREAM(如爲PrintWriter) 的getBytes( 「UTF-8」);

請告訴我如何能夠將這些散列保存到XML沒有遇到這種

謝謝

+0

我強烈建議你使用XML庫來編寫XML。我懷疑你沒有引用一些內容。該庫將阻止您編寫無效的XML。 FWIW我使用XOM庫 – 2013-04-27 18:00:48

回答

2

我認爲,在getFileHash方法返回二進制數據(如一個byte [])。但是,XML是文本,因此您不能將任意二進制數據放入其中。解決方法之一是將二進制數據用十六進制編碼或base64編碼轉換成字符,例如。

此外,各種getBytes()呼叫將根據平臺編碼,其可以是或可以不是UTF-8返回的字節。明確指定編碼要安全得多。