0

标题几乎说明了这一点。

我为一个文本文件计算了一个 SHA1 哈希,到目前为止一切都很好。我只使用普通的 FileOutputStream 将其写入 .xml 文件。

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 字符 0x06、0x1b”之类的异常,具体取决于我传递的输入文件。

到目前为止我尝试了什么:文件流的不同包装器(例如 PrintWriter)getBytes("UTF-8");

请告诉我如何将这些哈希保存到 xml 而不会遇到这个问题

谢谢你

4

1 回答 1

2

我假设,该getFileHash方法返回二进制数据(如字节 [])。但是,XML 是文本,因此您不能将任意二进制数据放入其中。解决此问题的一种方法是将二进制数据转换为字符,例如使用十六进制编码或 base64 编码。

此外,各种getBytes()调用将根据平台编码返回字节,可能是也可能不是 UTF-8。明确指定编码要安全得多。

于 2013-04-27T18:08:11.167 回答