知识大全 JDom输出UTF-8的XML完美解决
Posted 知
篇首语:将相本无种,男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JDom输出UTF-8的XML完美解决相关的知识,希望对你有一定的参考价值。
JDom输出UTF-8的XML完美解决 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
现象描述 JDom输出Xml文件 当使用字符编码GBK时正常 而输出UTF 时乱码
完美的解决方法从辟谣开始 )JDOM是否生成UTF 的文件与Format是否设置无关 只有输出其他字符编码才需要设置 见下面的注释 )JDOM输出UTF 文件乱码的根本原因并非在JDOMAPI 而是在JDK
具体描述 JDOM的输出类XMLOutputter有两个output接口 除了都具有一个Document参数外 分别接受Writer和OutputStream参数 这给我们一个错觉 两个接口可以任意使用 首先我们用output(doc System out)来做测试 此时得到乱码 然后我们改为output(doc new PrintWriter(System out))来测试 输出不是乱码 也就是说在控制台的时候一定要用一个Writer接口包装一下 然后我们用output(doc new FileWriter(path))来做测试 结果却得到乱码 然后我们改为output(doc new FileOutputStream(path))来测试 输出不是乱码 也就是说在输出文件的时候一定要用一个OutputStream接口包装一下 疯了吧?呵呵 很搞笑是吧 经过到JDOM的源码中调试 发现没有任何问题 问题出在了JDK里面
JDK内的对应接口处理 )PrintWriter类有参数为OutputStream的构造方法 因此可以从System out包装到PrintWriter )FileWriter类没有参数为OutputStream的构造方法 因此不能从FileOutputStream包装到FileWriter )如果PrintWriter类用了参数为Writer的构造方法(Writer实现为FileWriter) 最后输出也是乱码 )如果用一个FileOutputStream来包装一个控制台输出 也是乱码 因此 对于JDK内的各种输出体系 各种InputStream OutputStream reader和writer要充分认识 否则极容易出现一些意想不到的问题
测试的JDOM版本 测试代码
import java io File;
import java io FileOutputStream;
import java io FileWriter;
import java io PrintWriter;
import java util HashMap;
import jdom Document;
import jdom Element;
import jdom output Format;
import jdom output XMLOutputter;
public class BuildXML
public static void main(String[] args) throws Exception
File xmlfile=new File( C:\\\\EditTemp\\\\xml\\\\abc xml );
//中文问题 //GBK 是没有问题的 但UTF 就是有问题的
//原因
// )对于磁盘文件 必须使用输出流 FileOutputStream
// FileWriter out=new FileWriter(xmlfile);会导致乱码
// )对于控制台输出 则必须使用PrintWriter 如果直接使用System out也会出现乱码
// PrintWriter out=new PrintWriter(System out);
FileOutputStream out=new FileOutputStream(xmlfile);
Element eroot=new Element( root );
eroot addContent((new Element( code )) addContent( 代码 ));
eroot addContent((new Element( ds )) addContent( 数据源 ));
eroot addContent((new Element( sql )) addContent( 检索sql ));
eroot addContent((new Element( order )) addContent( 排序 ));
Document doc=new Document(eroot);
XMLOutputter outputter = new XMLOutputter();
//如果不设置format 仅仅是没有缩进 xml还是utf 的 因此format不是必要的
Format f = Format getPrettyFormat();
//f setEncoding( UTF );//default=UTF
outputter setFormat(f);
outputter output(doc out);
out close();
cha138/Article/program/Java/hx/201311/27086
相关参考
用JDOM完成Java更新XML文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文详细介绍
DOM、JDOM、DOM4J解析XML实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <
解决ASP网站gb2312和utf-8乱码问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一般我
解决jsUTF-8传参到GBK页面乱码问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! jsU
C#高级编程:写入XML输出结果 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
知识大全 Jsp结合XML+XSLT将输出转换为Html格式
Jsp结合XML+XSLT将输出转换为Html格式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
XML入门的常见问题解决集合(四) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在XML对象模
解决JSP中拼装数据为XML出现的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一应用背景
Java操作Excel完美解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 只要有表格就会
用Asp生成UTF-8格式的文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASP由于是一种