因为毕业论文的原因,我要生成一大批xml文件。在调试代码的时候,xml文件中的内容用的是中文,生成xml文件时候设定编码的代码如下:
org.dom4j.io.OutputFormat outFormat=org.dom4j.io.OutputFormat.createPrettyPrint();
outFormat.setIndent(" ");
outFormat.setEncoding("Unicode");
XMLWriter xmlW=new XMLWriter(new FileWriter(new File("c:\\qwert.xml")),outFormat);
xmlW.write(doc);现在我要在另外的地方解析这些xml文件,解析的关键代码如下:
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
InputStream ips=new FileInputStream("c:\\qwert.xml");
doc=db.parse(ips);
这个时候parse部分报错,原因是说xml文件里含有不再指定编码里的字符。
如果这个xml文件里面全是英文字符解析起来也有问题,为什么呢?
只有把编码格式改为utf-8的时候解析才准确。
是不是java默认的是某个编码格式?
我怎么解决这个问题,因为我程序正式开始运行都是采集英文的网页。谢谢。

解决方案 »

  1.   

    生成xml文件时候,设定的编码要和生成的XML文件编码一样,都取UTF8啊
    outFormat.setEncoding("UTF8");
      

  2.   

    全部用UTF-8编码就可以解决问题了,写入XML时虽然看到的不是中文,但程序读进来后能直接用 无需转码
      

  3.   

    Base64 base64=new Base64();
    String str = "test_测试";
    String testStr = new String(base64.decode(str.getBytes()));看看这个编码
      

  4.   

    忘了说,我在生成xml文件时就是outFormat.setEncoding("UTF8");
    即使这样也不行,说这个xml文件里有写字符不符合,言下之意是有些中文字符不在utf8里面吗?
      

  5.   

    不可能 你XML用UTF8 读写都不要转码就行了
      

  6.   

    估计你的xml文件的编码本身就有问题
    用emedit这样的工具转换一下
      

  7.   

    注意到你这里:outFormat.setEncoding("Unicode");
    这个编码必须和<?xml version="1.0" encoding="**"?> 要一致才可以的,否则就会变成乱码
      

  8.   

    去这里看看吧:
    http://www.javadingle.com