java字节流读txt文件出现乱码怎么解决?

2024-11-30 23:46:06
推荐回答(1个)
回答(1):

用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占1一个字节,一个中文占两个字节,当你用两个字节的的数组读取,中文字就会被拆分,这样就肯定会出现乱码。

给你个解决方法,我用的JDK1.5,完全解决了你的需求,代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Start{
public static void main(String[] args){
File fileS = new File("E:/123.txt");
if(!fileS.exists()){
System.out.println ("找不到指定文件");
return;
}
FileInputStream fileIS = null;
try{
fileIS = new FileInputStream(fileS);
byte[] byt = new byte[2];

int data = fileIS.read(byt);
for (; data != -1 ; ){
int a=byt[0];
int b=byt[1];
if((a >= 0 && a <= 127) && (b > 127 || b < 0)){
System.out.print ((char)a);
data = fileIS.read();
byt[0] = (byte)b;
byt[1] = (byte)data;

}
String str = new String(byt);
System.out.print (str);
data = fileIS.read(byt);
}
System.out.println ();

}catch(FileNotFoundException ex){
ex.printStackTrace();
}catch(IOException ex){
ex.printStackTrace();
}finally{
if (fileIS != null) {
try{
fileIS.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
}
}