读取文件的乱码问题

---恢复内容开始---

  根据老师布置的作业步骤,下一步进行文件处理。

  我在文件读取的时候采用了BufferedReader 类,打算进行逐行读取。此处是对直接从网页上扒下来的源代码(直接存储为*.txt)进行读取,出现乱码问题。

  下面展示下代码:

 1 package process;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.FileReader;
 6 import java.io.IOException;
 7 
 8 public class readFileByLine {
 9     
10     public static void main(String[] args) {
11         
12         File file = new File("E:/eclipseWorkspace/tixiJG/TTest/003_utf8.txt");
13         
14         readFile(file);
15         
16         
17         
18     }
19     
20     public static void readFile(File fileName) {
21         
22         String str = "";
23         BufferedReader buff = null;
24         
25         try {
26             
27             buff = new BufferedReader(new FileReader(fileName));
28             int line = 1;
29             while( (str = buff.readLine()) != null) {
30                 
31                 System.out.println("line "+line+": "+str);
32                 
33                 line++;
34             }
35             buff.close();
36         }catch(IOException e) {
37             
38             e.printStackTrace();
39         }
40     }
41 
42 }

  修改一、我觉得可能是编码不是默认的utf8,于是将该文件的编码改为utf8,结果依旧乱码。

  修改二、经查询API(1.6)我发现InputStreamReader的读取可以指定编码,于是我重新弄了一个程序,经过各种曲折的修改终于正常运行,然而依旧乱码。

  修改三、BufferedReader 与 InoutStreamReader 结合起来用,即:

    InputStream in = new FileInputStream(fileName);
    InputStreamReader isr = new InputStreamReader(in, "utf-8");
    BufferedReader buff = new BufferedReader(isr);

  完整代码如下:

package process;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/***
 * 解决乱码
 * @author Administrator
 *
 */
public class readFileByLine2 {
    
    public static void main(String[] args) {
        
        File file = new File("E:/eclipseWorkspace/tixiJG/TTest/003_utf8.txt");
        
        readFile(file);
        
    }
    
    public static void readFile(File fileName) {
        
        
        try {
            
            String str = "";
            InputStream in = new FileInputStream(fileName);
            InputStreamReader isr = null;
            
            isr = new InputStreamReader(in, "utf-8");
            BufferedReader buff = new BufferedReader(isr);
            int line = 1;
            while( (str = buff.readLine()) != null) {
                
                System.out.println("line "+line+": "+str);
                
                line++;
            }
            buff.close();
        }catch(IOException e) {
            
            e.printStackTrace();
        }
    }

}
————————————来自 大中国的智慧结晶
原文地址:https://www.cnblogs.com/guoqiaoqiao/p/7667993.html