Dom4j保存数据乱码以及xml文件头编码格式改变的原因和解决方法
来源:互联网 发布:制作相片的软件 编辑:程序博客网 时间:2024/05/17 04:43
dom4j解析xml文档请参考:java解析xml的方式总结
dom4j对xml文档进行增删改查后都要将数据写回原文件,有时会出现乱码。
产生乱码原因:
此时,不管xml文档的编码格式是什么,读入内存的Document都是UTF-8格式的,如果不设定写回时的编码格式,将按照操作系统的编码格式(gb2312或gbk)写回文件。
如果 xml文档是UTF-8的,而写回时使用的是gb2312(gbk)编码,当然乱码,这是需要指定写回时的编码格式为UTF-8。
如果xml文档是gb2312(gbk)的编码格式,指定写回时的编码格式为gb2312(gbk)。
解决方法:
将文件写回时使用的FileFileWriter()改为其他OutputStream类,如使用OutputStreamWriter。
具体代码如下:
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/test.xml"), "UTF-8"));writer.write(document);writer.close();
文件头编码格式被改变原因:
假设此时xml文档的编码格式是gb2312,写回文件的编码格式也是gb2312,那么xml文档就没有乱码了,可是新的问题出来了,文件头的编码格式被改为了UTF-8。这是因为,文档在写回时,文档的头编码格式是根据内存中Document的编码(UTF-8)设定的
解决方法:
使用dom4j提供方的输出格式化类OutputFormat
具体代码如下:
OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("gb2312");XMLWriter writer = new XMLWriter(newOutputStreamWriter( newFileOutputStream("src/test.xml"), "gb2312"), format);writer.write(document);writer.close();
终极解决方案:
使用下面代码
OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");//应和xml文档的编码格式一致XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"), format);writer.write(document);writer.close();format.setEncoding("UTF-8");中的编码应该和你的xml文档的编码格式一致,这样就能保证,既不出现乱码,也不会出现文件头编码格式改变的情况
- Dom4j保存数据乱码以及xml文件头编码格式改变的原因和解决方法
- dom4j读写xml文件以及遇到的乱码解决办法
- dom4j保存数据的乱码问题
- 【基础知识】字符集编码、Java中编码的格式以及乱码产生的原因
- DOM4J创建、修改和格式xml文件
- dom4j生成xml文件的中文乱码
- dom4j生成xml文件的中文乱码
- dom4j向xml文件中写数据乱码问题解决
- jdom和dom4j读取xml文件以及生成xml文件的方法
- 使用dom4j工具包实现对xml文件的增删改查和乱码问题的处理
- DOM4J创建、修改和格式xml文件例子(转)
- DOM4J创建、修改和格式xml文件例子(转)
- 使用 dom4j 生成 XML指定编码格式
- 建立xml文件时遇到的编码问题和解决方法
- 常见的编码格式/txt文件乱码
- XML文件编码格式和encoding属性
- 【PHP-文件下载】遇到的编码格式不正确导致文件下载后乱码、文件大小发生改变的问题
- DOM4J生成XML文件的中文乱码问题
- [DCC Error] E2161 Error: RLINK32: Error opening file "_____.drf"
- 面试准备
- hdu_1232 畅通工程
- mysqlserver优化之mysql日志配置
- poj 2449 k短路--模板
- Dom4j保存数据乱码以及xml文件头编码格式改变的原因和解决方法
- MySql存储过程—3、变量
- vector简单用法
- linux下动态库&静态库查看方法
- hdu 4335 What is N?
- Ubuntu12.04 root用户登录设置
- MySql存储过程—4、参数
- 励志:12位早起的IT大佬们让小伙伴们都惊呆了
- MySql存储过程—5、逻辑判断,条件控制