강좌 & 팁
java에서의 파일 인코딩방법을 설명하겠습니다.
샘플코드를 보시면 알꺼라 생각합니다.
저의 경우 java파일의 인코딩은 UTF-8로 되어있습니다.
메모장에서 그냥 파일을 저장하면 인코딩이 ANSI로 됩니다.
ANSI파일을 java로 읽어들여 편집한뒤 저장하면 파일인코딩이 UTF-8로 저장됩니다.
기본 인코딩으로 하니 java파일의 인코딩과 같이 UTF-8로 저장되는것 같습니다.
그래서 인코딩을 지정하여 파일 읽고 쓰기하는 샘플을 아래와 같이 만들어 봤습니다.
import java.io.BufferedReader;
/** } /** |
[실행 결과]
----- 파일 읽기 인코딩 : [UTF-8]
----- 파일 읽기 인코딩 : [MS949]
----- 파일 읽기 인코딩 : [UTF-8]
|
테스트를 하다가 특이한 사항을 발견했습니다.
그냥 메모장에서 만든 UTF-8과 java에서 만든 UTF-8의 인코딩한 파일의 바이너리 코드가 틀리더군요.
java에서 만든 UTF-8파일 [이파일은 UTF-8파일입니다.]
메모장에서 만든 UTF-8파일 [이파일은 UTF-8파일입니다.]
위와같이 차이가 있습니다.
메모장에서 만든 UTF-8파일을 샘플소스로 읽어들이면 아래와 같이 출력됩니다.
위에 내용은 이클립스 콘솔창에 실행된 결과입니다.
웃긴건 저걸 그대로 복사해서 메모장에 넣으면 제대로 글씨가 표시됩니다. ^^;
정확히는 뭔지 모르겠지만, 한글에 일경우에만 생기는 문제일것 같습니다.
문제가 있을수 있다는것만 참고 하시길 바랍니다.
감사합니다.
글자까 깨져 보이는 이유는 BOM( Byte Order Mark) 때문입니다.
"메모장에서 만든 UTF-8" 파일을 헥사로 보면 앞에 EF BB BF 라는 세개의 문자가 보이지요.
어게 바로 BOM입니다.
BOM이란. 이 문서가 어떤 형식의 만들어졌다는 것을 알려주는 정보입니다. (UTF-8, UTF-16.등등)
글자가 깨져 보였다고 UTF-8로 엔코딩 안됐다고 생각하지는 마세요.^^