您的位置:首页 > 其它

用dom将数据写到xml中 设置xml文件gbk编码时中文会出现乱码

2012-05-30 10:48 246 查看
问题:我用dom将数据写到xml中 设置xml文件的编码格式是gbk时再dos下运行jar包中文会出现乱码

如下:



代码如下:

StringWriter strWtr = new StringWriter();
StreamResult strResult = new StreamResult(strWtr);
TransformerFactory tfac = TransformerFactory.newInstance();
try {
Transformer t = tfac.newTransformer();

//                t.setOutputProperty(OutputKeys.ENCODING, "GBK");
t.setOutputProperty(OutputKeys.INDENT, "yes");
t.setOutputProperty(OutputKeys.METHOD, "xml"); // xml, html,// text
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", spaceNum);
Element element = doc.getDocumentElement();
t.transform(new DOMSource(element), strResult);
} catch (Exception e) {
e.printStackTrace();
//            ToolKit.writeLog(this.getClass().getName(), "转换XML异常,参数为:" + doc, e);
}
result = strResult.getWriter().toString();


至于是因为原因,我也不知道,关于操作XML ,有dom4j这么好用的包,你不用,干啥要用DOM这么原生。

这个我修改把程序环境编码换成了GBK编码,甚至把myeclipse的编码也换成了GBK编码,问题还是没有解决。

最后把dom转换成jdom就解决了,

转换代码如下:

/*
把dom转换成jdom
*/
DOMBuilder builder = new DOMBuilder();
org.jdom.Document jdomDoc = builder.build(doc);   //doc:已经创建好的dom
Format format=Format.getPrettyFormat();
format.setEncoding("GBK");
XMLOutputter output=new XMLOutputter();
output.setFormat(format);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
output.output(jdomDoc, baos);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result=baos.toString();   //转换成字符串输出
再运行jar包,就没问题了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: