import java.io.*;
public class FileIn {
public static void main(String[] args) {
try {
FileInputStream rf = new FileInputStream(
"F:\\100个让心情变好的佛家领悟-佛家感悟.txt");
int b;
while ((b = rf.read()) != -1)
System.out.print((char) b);
rf.close();
} catch (IOException ie) {
System.out.println(ie);
} catch (Exception e) {
System.out.println(e);
}
}
}
------解决方案--------------------
是你取的方法不对,而不是中文乱码,你这里面每次去到的只是一个字节,而UTF8编码的中文是2个字节,肯定无法正常输出中文
- Java code
import java.io.*;public class FileIn { public static void main(String[] args) { try { FileInputStream rf = new FileInputStream( "F:\\100个让心情变好的佛家领悟-佛家感悟.txt"); BufferedReader br=new BufferedReader(new InputStreamReader(rf));// int b;// while ((b = rf.read()) != -1)// System.out.print((char) b);// rf.close(); String s=""; while((s=br.readLine())!=null){ System.out.println(s); } br.close(); } catch (IOException ie) { System.out.println(ie); } catch (Exception e) { System.out.println(e); } }}
------解决方案--------------------
既然已经能够正常输出中文,那么楼主记得结贴
看你0结帖率 ……
------解决方案--------------------
明确的说,不应该用字节流是 浅薄的说法,至少不确切
FileReader只能用本地操作系统的编码,无法进行转码读取
比如你本地gbk的系统,就无法读取utf8编码的文件
这时候需要用InputStreamReader来做