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上的文件,到本地后,为什么汉字都是乱码了呢,请高手指教。
{
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上的文件,到本地后,为什么汉字都是乱码了呢,请高手指教。
如果按我的方式.
应该是写成
bis = new BufferdReader(new InputStreamReader(httpUrl.getInputStream(),"UTF-8"));
或者
bis = new BufferdReader(new InputStreamReader(httpUrl.getInputStream(),"gb2312"));
{
bos.write(b);
}read() 的时候不一定能读满 1024 个字节,而 write() 却一定会写出去 1024 个字节。
int n;
while((n = bis.read(b)) > 0)
{
bos.write(b, 0, n);
}
只是往这边写的时候,没写出来根本问题的应该是 编码的问题,因为这个程序读gbk的编码的xml文件的时候,就是正确的,没有出现乱码现象。