使用FileOutputStream而不是FileWriter。
后者使用自己的编码,几乎可以肯定不是UTF-8(取决于您的平台,它可能是Windows-1252或IS-8859-1)。
编辑(现在有时间):
不带序的XML文档被允许编码为UTF-8或UTF-16。对于序言,可以指定其编码(序言只能包含US-ASCII字符,因此序言始终可读)。
读者处理字符;它将解码基础InputStream的字节流。结果,当您将Reader传递给解析器时,您将告诉您已经处理了编码,因此解析器将忽略序言。当您传递一个InputStream(读取字节)时,它不会进行此假设,而是会在序言中定义编码-
如果不存在,则默认为UTF-8 / UTF-16。
我从未尝试读取以UTF-16编码的文件。我怀疑解析器将寻找字节顺序标记(BOM)作为文件的前2个字节。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)