<div class="it610-blog-content-contain" style="font-size: 14px"></div>
package com.lynda.files;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadNetworkFile {
public static void main(String[] args) {
StringBuffer sb = null;
try {
URL url = new URL("http://www.sciencenet.cn/xml/news.aspx?news=0");
InputStream in = url.openStream();
//BufferedInputStream buf = new BufferedInputStream(in);
//用BufferedReader解决乱码
BufferedReader reader = new BufferedReader (new InputStreamReader(in));
sb = new StringBuffer();
while(true){
int date = reader.read();
if(date==-1){
break;
}else{
sb.append((char)date);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(sb);
}
}
从网上读取的xml文件出现中文乱码,因为一个汉字占两个字节,而当中英文混合的时候,有的字符占一个字节,有的字符占两个字节,所以如果直接用BufferedInputStream读字节,而数据比较长,没有一次读完的时候,很可能刚好读到一个汉字的前一个字节,这样,这个中文就成了乱码,后面的数据因为没有字节对齐,也都成了乱码.所以我们需要用BufferedReader来读取,它读到的是字符,所以不会读到半个字符的情况,不会出现乱码.
参考:http://www.pocketdigi.com/20110805/437.html#more-437