没有比人更高的山

Java读取文件的编码问题0

在Java的文件操作中,如果一个文件是UTF-8格式,那么一定要使用UTF-8的编码格式去读取,如果按其他格式读取之后再做转换,可能会发生不可预料的问题,如“乱码”,具体原因我没有搞清楚,因为JDK读取文件时采用了sun.nio.cs.StreamDecoder这个类,这个是sun公司的代码实现,并没有源代码可以参考。

下面就两种方式做记录:
1.Java按一定编码读取文件
InputStream is = Main.class.getResourceAsStream(fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
String tmp;
while((tmp = br.readLine()) != null){
    System.out.println(tmp);
}

2.Java字符串编码转换
FileReader reader = new FileReader(fileName);
BufferedReader br = new BufferedReader(reader);
String tmp;
while((tmp = br.readLine()) != null){
    byte[] bs = tmp.getBytes();
    System.out.println(new String(bs, "utf-8"));
}

VN:F [1.7.5_995]
Rating: 0.0/10 (0 votes cast)
VN:F [1.7.5_995]
Rating: 0 (from 0 votes)