JAVA 질문있습니다.


package Ex;

import java.io.*;

public class fre {

    public static void main(String[] args) throws IOException {
        FileInputStream fi = null;
        InputStreamReader in = null;
//      fi = new FileInputStream("fileEx.txt");  // fileEx.txt ANSI로 저장
//      in = new InputStreamReader(fi, "MS949"); 

                fi = new FileInputStream("fileEx1.txt");// fileEx1.txt UTF-8로 저장
        in = new InputStreamReader(fi, "UTF-8"); 
        int ch;

        while((ch = fi.read()) !=-1 ){
            System.out.print((char)ch); 
        }
        fi.close();
    }
}

파일입출력을 하고 있습니다. 파일에 입력된 텍스트를 콘솔창에 출력하고 싶었는데 자꾸 외계어만 뜨네요.

fileEx.txt (ANSI로 저장)

파일 리더 파일 라이터
fileReader fileWriter
Java Test

fileEx.txt 는 위와 같이 저장하고 콘솔창에 출력하니

Æ??? ¸®´? Æ??? ¶?????
fileReader fileWriter
Java Test

위와 같이 출력이 되고요. 제가 인코딩체계에 대해 잘못알고 있는 것 같아서 그나마 쉬운? uft-8형식으로 해봤습니다.

fileEx1.txt (UTF-8로 저장)

자바 연습 "utf-8"형식

fileEx1.txt 는 위와 같이 저장하고 콘솔창에 출력하니

??¿????°? ??°??? "utf-8"??????

라 뜨네요. 저는 틀린 게 없다고 보여지는데 왜 한글출력이 안되는지 모르겠습니다. ㅠㅠ

  • 2016년 05월 10일에 작성됨

조회수 288


2 답변


BufferedReader로 감싸서 사용해보세요.

    public static void main(String[] args) throws IOException {
        FileInputStream fi = null;
        InputStreamReader in = null;

        fi = new FileInputStream("fileEx1.txt");// fileEx1.txt UTF-8로 저장
        in = new InputStreamReader(fi, "UTF-8");
        BufferedReader br  = new BufferedReader(in);

        int ch;

        while ((ch = br.read()) != -1) {
            System.out.print((char) ch);
        }
        fi.close();
    }

  • 2016년 05월 10일에 작성됨
    프론트앤드, 임베디드 초보개발자입니다

  • Buffer로 묶어도 여전히 같은 결과가 나옵니다. ㅠㅠ    박주영   2016.5.10 16:39     
  • 댓글이 달렸는지 이제 봤네요 ㅠ. 위 코드 복붙으로 해도 그러나요?     한인규   2016.5.10 20:30     

아래처럼 file encoding을 지정해서 실행해 보세요.

import java.io.*;

public class Test {
  public static void main(String[] args) throws IOException {
    FileInputStream fi = null;
    InputStreamReader in = null;

    fi = new FileInputStream("fileEx1.txt");// fileEx1.txt UTF-8로 저장
    in = new InputStreamReader(fi, "UTF-8");
    BufferedReader br  = new BufferedReader(in);

    int ch;
    while ((ch = br.read()) != -1) {
      System.out.print((char)ch);
    }

    fi.close();
  }
}

rm *.class ; javac Test.java ; java -cp . -Dfile.encoding=UTF8 Test
  • 2016년 05월 11일에 수정됨
    프로그래밍 언어를 좋아하는 프로그래머
  • 2016년 05월 11일에 작성됨
    프로그래밍 언어를 좋아하는 프로그래머

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close