• 读取文件的乱码问题


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

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

      我在文件读取的时候采用了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();
            }
        }
    
    }
    ————————————来自 大中国的智慧结晶
  • 相关阅读:
    chrome输入框记住密码导致背景黄色的解决方案
    死活要居中(转载)
    Google HTML/CSS/JS代码风格指南
    CSS的inherit与auto使用分析
    photoshop中rgb与索引模式的区别
    placeholder调整颜色
    你应该了解的5个JavaScript调试技巧
    HTML TAG FROM MDN
    apple iphone 3gs 有锁机 刷机 越狱 解锁 全教程(报错3194,3014,1600,短信发不出去等问题可参考)
    史上最全的CSS hack方式一览
  • 原文地址:https://www.cnblogs.com/guoqiaoqiao/p/7667993.html
Copyright © 2020-2023  润新知