package IoOut; import java.io.*; public class App14_1 { public static void main(String args[]) throws IOException //read()方法抛出IOException异常,在此交给JVM处理 { FileInputStream fr =new FileInputStream("c:\\aaa.txt"); //ok,但不能正 确读取出汉字 int ch; int count=0; ch=fr.read(); //read()方法返回的是一个整型数字 while(ch!=-1) { System.out.print((char)ch); ch=fr.read(); count++; } fr.close(); System.out.println("\n共读取了:"+count+"个字符"); } } 在aaa.txt中有汉字,但输出为乱码,字符输出正常,为什么?
首先确认你的字符编码,gbk编码中文是2个字节,utf编码是3个字节代表一个字符 read读到的是一个节,一个中文,当然就读半个字节了,不完全当然是乱码了