public class RssXml
{
public static void main(String[] args)
{
String s1 = "http://rss.sina.com.cn/news/allnews/astro.xml"; 
String s2 = "D:\\1.xml";
URL urlfile = null; 
HttpURLConnection httpUrl = null; 
BufferedInputStream bis = null; 
BufferedOutputStream bos = null; 
File f = new File(s2)[ try//去网络文件

urlfile = new URL(s1); 
httpUrl = (HttpURLConnection)urlfile.openConnection(); 
httpUrl.connect(); 
bis = new BufferedInputStream(httpUrl.getInputStream()); 
}
catch(Exception e)

System.out.println(e.toString()); 
} try  //写入 本地

bos = new BufferedOutputStream(new FileOutputStream(f));; 
byte[] b = new byte[1024]; 
while(bis.read(b)!=-1) 


bos.write(b); 
}  
}catch(Exception e)

System.out.println(e.toString());  
}
finally

try

bos.flush(); 
bis.close(); 
httpUrl.disconnect(); 
}
catch(Exception e)

System.out.println(e.toString());  


System.out.println("rss");
}
}
我用这个方法下载过来的rss.sina.com.cn上的文件,到本地后,为什么汉字都是乱码了呢,请高手指教。

解决方案 »

  1.   

    编码问题,读文件的时候试试用UTF-8或者gb2312试试.年InputSreamReader可以设置按什么方式的编码读文件,看看帮助文档.其他还有什么方法可以我也没细看过.
    如果按我的方式.
    应该是写成
    bis = new BufferdReader(new InputStreamReader(httpUrl.getInputStream(),"UTF-8"));
    或者
    bis = new BufferdReader(new InputStreamReader(httpUrl.getInputStream(),"gb2312"));
      

  2.   

    看起来应该跟编码方式无关,因为程序是“字节流读”和“字节流写”。我没运行你的程序,但看上去,下面这段代码不合适:    while(bis.read(b)!=-1)
        {
            bos.write(b);
        }read() 的时候不一定能读满 1024 个字节,而 write() 却一定会写出去 1024 个字节。
      

  3.   

    唉,真不想写这段代码(实在太基础了,替你写相当于害了你),不过,都“跪求”了……byte[] b = new byte[1024];
    int n;
    while((n = bis.read(b)) > 0)
    {
        bos.write(b, 0, n);
    }
      

  4.   

    哈哈,这样写也是一样的乱码,根本问题不在这里,我已经这样做了
    只是往这边写的时候,没写出来根本问题的应该是 编码的问题,因为这个程序读gbk的编码的xml文件的时候,就是正确的,没有出现乱码现象。
      

  5.   

    hehe, 我被你误导了。其实,你原来的程序本来就没有错!错在你以为下载的文件“变成了乱码”,实际上人家是 UTF8 编码的文件,你用一般的文本编辑器看当然是乱码了。瞎耽误功夫,我也是瞎出主意。看来以后得问明白症状再回帖了。
      

  6.   

    我也发现了这个问题了,哈哈,谢谢您的热情回复了那我在本地怎么把utf-8的文件读出来呢,就是分析这个文件,然后把需要的内容取出来
      

  7.   

    那你是用什么“类库”来做 XML 解析呢?如果是 Xerces 或者 jdom 什么的,尽管用就是了,它们都会根据 xml 文件内声明的 encoding 进行正确的解析,如果你是自己直接读文件,那做一个 Reader 对象出来就可以了,但要把 Reader 对象的 encoding 设置为 utf-8。