다른 인코딩 형식의 텍스트 파일 읽기

텍스트 파일 인코딩 문제: 서로 다른 인코딩 형식의 텍스트 파일을 읽으면 인코딩이 깨질 수 있습니다. (특히 텍스트에 한자가 있는 경우)현재 두 개의 텍스트 파일이 준비되어 있습니다:test1txt(인코딩 형식: UTF-8) 및 test2.txt (인코딩 형식: "ANSI") 두 텍스트 파일에 저장된 것은 모두 "hello, 중국"코드는 다음과 같습니다.
public class ReadFile {
    public static void main(String[] args) throws IOException {
        File f1=new File("e:"+File.separator+"test1.txt");
        File f2=new File("e:"+File.separator+"test2.txt");
        String str1=FileUtils.readFileToString(f1);
        String str2=FileUtils.readFileToString(f2);
        System.out.println(str1);
        System.out.println(str2);
    }
}

출력 결과: test1 텍스트 내용: hello, 중국 test2 텍스트 내용: hello㎡й�
test2 텍스트가 한자와 잘 읽을 때 인코딩이 깨진 것을 볼 수 있습니다. 이것은 읽을 때 파일을 읽는 인코딩 형식을 설명하지 않았기 때문입니다. 코드가 실행될 때 기본적인 인코딩 형식으로 해석되기 때문에 인코딩이 깨졌습니다(주: 이것은 제 개인적인 이해입니다. 오류가 있으면 지적해 주십시오).코드 수정은 다음과 같습니다.
public class ReadFile {
    public static void main(String[] args) throws IOException {
        File f1=new File("e:"+File.separator+"test1.txt");
        File f2=new File("e:"+File.separator+"test2.txt");
        String str1=FileUtils.readFileToString(f1,"UTF-8");  //           utf-8
        String str2=FileUtils.readFileToString(f2,"gbk");    //           gbk
        System.out.println("test1    :"+str1);
        System.out.println("test2    :"+str2);
    }
}

출력 결과:test1 텍스트 내용:hello, 중국test2 텍스트 내용:hello, 중국
이 때 텍스트 파일의 내용을 정확하게 읽습니다.때때로 우리는 인코딩 형식이 정확한 상황에서도 일부 인코딩이 발생할 수 있다. 이럴 때 텍스트 파일이 저장될 때 기본적으로 BOM이 추가될 수 있다. 윈도에서 자체로 가지고 있는 텍스트 인코더를 사용하지 말고 다른 텍스트 인코더를 선택해서 인코딩 형식에 BOM이 자동으로 포함되지 않도록 하는 것이 좋다.

좋은 웹페이지 즐겨찾기