有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将字节保存到xmlfile。无效字符

书名差不多说明了这一点

我计算了一个文本文件的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字符0x06、0x1b”之类的异常

到目前为止我试过: 文件流的不同包装(例如PrintWriter) getBytes(“UTF-8”)

请告诉我如何将这些哈希保存为xml,而不必面对这个问题

谢谢!


共 (1) 个答案

  1. # 1 楼答案

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

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