你的意思是utf-8编码的中文会出问题?这个是不会的,你在解析之前把用native2ascii转化一下,然后就不会有问题了
轧面显示的时候用utf-8编码

解决方案 »

  1.   

    不是,我的xml是别人生成的,存储格式就是utf-8,我通过http得到后不能通过DOM直接解析,解析的时候会报根文件错误,不只是乱码的问题,用utrl edit来看的话,头<?.....?>这块的格式就不对。
    如果时gb2312的就不存在问题。
      

  2.   

    MSXML DOM中加载加载 XML文档的两个主要方法是 LoadXML 方法和 Load 方法,其中Load 方法实现以下算法,用于确定 XML 的字符编码或字符集。 1.如果 Content-Type HTTP 标题定义了字符集,该字符集则替代 XML 文档本身的所有内容。因为没有 HTTP 标题,所以这显然不适用于 SAFEARRAY 和 IStream 机制。
    2.如果有双字节 Unicode 字节次序标志,则它假设编码是 UTF-16。它既可处理大 endian,也可处理小 endian。
    3.如果有四字节 Unicode 字节次序标志 (0xFF 0xFE 0xFF 0xFE),则它假设编码是 UTF-32。它既可处理大 endian,也可处理小 endian。
    4.否则,它假设编码是 UTF-8,除非它用指定其他一些字符集的编码属性(如 ISO-8859-1、Windows-1252、Shift-JIS 等),找到 XML 声明。 不知道这个规则是否也适用Java环境下的XML文档解析,仅作参考http://www.contnew.com/tech/web/html/2004/9/26_150311_01.html
      

  3.   

    关键是IO读操作,既然源文件格式已经是utf-8,读文件的时候要设定编码,所以要用Reader对象读
    举例:
    new InputStreamReader(new FileInputStream(new File(xqfile)),"utf-8");
      

  4.   

    这样吧,我详细的说一说我先的情况.
     
     我要解析的xml是由另外的程序生成的.编码是utf-8(在ie里打开正常,但是通过UltraEdit打开就不正常,有乱码)
     我现在通过DOM解析此xml,但总是报错。解析方法如下。
     public static Document readFile(File file) throws Exception {
        Document doc;
        try {
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          DocumentBuilder db = dbf.newDocumentBuilder();
          return doc;
        }
        catch (SAXParseException ex) {
          throw (ex);
        }
        catch (SAXException ex) {
          Exception x = ex.getException(); 
          throw ( (x == null) ? ex : x);
        }
      }
      
      我知道是编码的问题,但我不知道怎么转化。我曾经通过InputStreamReader和OutputStreamWriter将文件落为gb2312的。
      这时中文的乱码问题解决了,但在xml文件的前端多了一个"?"号。?<?xml version="1.0" encoding="utf-8" ?>
      
      
      
      关于utf-8和xml的帖子我找了不少,但都是只言片语,我也试过很多其他的办法,还是不能成功解析。所以请各位帮帮忙,给点详细的代码和思路。
      

  5.   

    把XML读出来到StringBuffer中, 把哪一行改为gbk, 再解析流.
      

  6.   

    昨天写给别人的代码,试试吧,能解析csdn 返回的RSS
    是utf-8的
    Document doc=null;
    try {
    DOMParser parser=new DOMParser();
    parser.parse("http://www.csdn.net/Feed.aspx?Column=95dea035-fce0-42ad-b150-90f11eb66456");
    doc=parser.getDocument();
    NodeList nl=doc.getElementsByTagName("rss");
    System.out.println(nl.getLength());
    System.out.println(nl.item(0).getAttributes().getNamedItem("version"));
    //your code here...}
    catch (Exception ex1) {
    ex1.printStackTrace();
    }