JAVA 질문있습니다.

조회수 2840회
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"??????

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

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();
        }
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 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
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)