用java代码写xml文件时,出现中文乱码的解决方法


                

phoneElement.addAttribute("name", "家庭电话");
emailElement.setText("xxx@163.com");
try {
/**
* 特别注意:

* java中有Writer类继承下来的子类没有提供编码格式处理,所以dom4j也无法岁输出的文件进行正确的格式处理。
* 这时候所保存的文件会以系统的默认编码对文件进行保存,在中文版的window下的java默认编码问GBK,
* 也就是说虽然我们标识了要将XML保存utf-8格式,但实际上文件是以gbk格式来保存的,所以也就是为什么能够使用GBK、
* GB2312编码来生成XMl文件能够正确被解析,而已utf-8格式生成的文件不能被XMl解析器所解析的原因。所以不应该用FileWriter对象来构建xml文档,
*而应该使用FileOutPutStream对象来构建xml文档。

*/
//FileWriter fw = new FileWriter("d:\\user.xml");   //用FileWriter来构建xml文档,虽然说可以构建xml文档,但是乳沟有中文时,会出现乱码,看上面的特别注意;
FileOutputStream fps = new FileOutputStream(new File("d:\\user.xml"));  //用FileOutPutStream对象来构建xml文档
OutputFormat opf = OutputFormat.createPrettyPrint();    //格式化生成的的XML文件
//opf.setEncoding("UTF-8");   //就算是设置了XML文件的编码形式,但是默认的是将文件的保存形式是gbk
//XMLWriter  xw = new XMLWriter(fw,opf);     //创建XMLWritere对象,将构建的xml文档对象和格式化xml文件的参数传入
XMLWriter xw = new XMLWriter(fps, opf);  //创建XMLWriter,将构建xml文档对象fps和格式化xml文档对象opf传入到XMlWriter的构造函数的参数中
xw.write(doc);  //用XMlWriter对象的write()方法将doc对象写入到xml文件中
xw.close();   //关闭XMlWriter对象
} catch (Exception e) {
e.printStackTrace();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值