又用行读的方式读取XML文件,得到的还是乱码,代码:
      FileReader fr = new FileReader(FName);
      BufferedReader br = new BufferedReader(fr);
      String tmpStr = new String();
      while ( (tmpStr = br.readLine()) != null) {
        record = record + tmpStr;
      }
      br.close();
      fr.close();有哪位老大遇到这个问题,给兄弟指条明路?

解决方案 »

  1.   

    你的InputStream中要被套上InputSteaamReader,这样在InputSteaamReader的构造函数中你就能指定字符集,这样读回来的就是正常的文字了
      

  2.   

    用GBK转换成中文不行吗?读取回来:
          FileInputStream hFile = new FileInputStream(FName);
          int i = hFile.available();
          byte buffer[] = new byte[i];
          hFile.read(buffer);
          hFile.close();
          String Value = new String(buffer);
          Value = new String( Value.getBytes("ISO8859-1"),"GBK");//用GBK构造字符串
          return Value;
      

  3.   

    两种办法都试过了,还是不行。      InputStream hFile = new FileInputStream(FName);
          InputStreamReader in = new InputStreamReader( hFile,"GB2312");      int i = hFile.available();
          char buffer[] = new char[i];
          in.read(buffer);
          in.close();
          String Value = new String(buffer);
          Value = new String( Value.getBytes("ISO8859-1"),"GBK");//用GBK构造字符串
          return Value;
      

  4.   

    用这个方法彻底解决中文问题,哈哈,大家参考参考。
    从这里学到的,http://www.softboss.com/DiscussDetail.asp?DiscussID=262
    大家去看看,多支持软件大佬!
    public String DomToStr2(Document dom) throws Exception{
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();    Properties properties = transformer.getOutputProperties();
        properties.setProperty(OutputKeys.ENCODING, "gb2312");
        properties.setProperty(OutputKeys.METHOD, "xml");
        properties.setProperty(OutputKeys.VERSION, "1.0");
        properties.setProperty(OutputKeys.INDENT, "no");
        transformer.setOutputProperties(properties);    StringWriter sw = new StringWriter();
        transformer.transform(new DOMSource(dom.getFirstChild()),
                              new StreamResult(sw));
        return sw.toString();
      }
      

  5.   

    Doucment doc = docBuilder.parse(f);TransformerFactory factory = TransformerFactory.newInstance();
    Transformer trans = factory.newTransformer();DOMSource source = new DOMSource(doc);
    StringWriter writer = new StringWriter();
    trans.transform(source, new StreamResult(writer));
    String xml = writer.toString();
      

  6.   

    alan118(我真他妈是个混蛋,鄙视我吧) 的语句和上面的一样,只是没有设置编码规则为gb2312,这样会缺省为UTF-8,中文会得到乱码,呵呵。在作XML转换的时候设置编码规则为gb2312即可解决中文问题。原来想到过这里,但是我认为自己是流操作,不需要xml自己规定的编码方式,在自己取用串的时候再转换即可,但是在作XML转换的时候,转换器还是用到了XML文件自己规定的编码规则,如果是缺省UTF-8的话,一个汉字也只给一个字节,那就是?了,这个?是怎么处理也不能再还原为汉字了。看来不能侥幸。
      

  7.   

    to 楼上,也许可以改变Writer的subclass来解决中文问题,得到byte流再处理
      

  8.   

    你不过是想保存到String吧,需要这么复杂吗?
          Source xmlSource = new DOMSource( dom );
          StringWriter sw = new StringWriter();
          Result result = new StreamResult( sw );
          TransformerFactory transformerFactory = TransformerFactory.newInstance();
          Transformer transformer = transformerFactory.newTransformer();
          transformer.transform( xmlSource, result );
          return sw.toString();搞掂!
      

  9.   

    软件大佬改名为国际软件外包管理网了,而且业务定位也更加准确了。最近搞了一个大佬联盟,联合起来接单子,而且我们有外包管理方面的能力和一些合作公司,这个欢迎您过来啊。----
    国际软件外包管理网是软件外包管理专家,助您成就知识新贵!请访问www.softboss.com!