/** * 将XML文档写入到文件中 */ public static void writerXML(Document document, String path) { try { OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); /* 如果指定编码更改为UTF-8 就会出错,更改为GBK就不会出错。 我们系统默认编码为GBK,java虚拟机在执行的时候会将document对象按照GBK来解码存放到内存中,然后按照UTF-8编码写入到文件中,就会出现错误。 我知道我说的不怎么对,希望交流更正 */ // format对象指定写入到文件的编码为UTF-8 XMLWriter writer = new XMLWriter(new FileWriter(path),format); // 此时document对象在内存中还是GBK的编码,我们只是要求写入到文件的时候编码为utf-8 没有想到document对象本身的编码为你虚拟机默认的编码,如果虚拟机底层默认的编码为utf-8就不会出错,如果不是就会出错。 writer.write(document); writer.close(); } catch (IOException e) { e.printStackTrace(); } } 我知道我说的不怎么对,希望交流更正 如果你需要把文件就得按照UTF-8写入到文件中,还不会出错建议使用以下代码。 /** * 将XML文档写入到文件中 */ public static void writerXML(Document document, String path) { try { FileOutputStream os = new FileOutputStream(path); os.write(document.asXML().getBytes("UTF-8")); os.close(); } catch (IOException e) { e.printStackTrace(); } }