코딩 공작소

saintrv.egloos.com

포토로그



Java 인코딩 처리 자바도 있다

HTML 문서중, UTF-8 문서가 간혹 있어서 처리하려는데,
코드 인코딩이 제대로 안되서 삽질했다. --; 결론적으로 UTF-8 문서를 처리하기 위한 방법은 아래와 같다.

환경: 윈도우 이클립스 (기본 인코딩 UTF-8)

1. 파일의 인코딩 알아내기.

- 생각보다 쉽지 않다. 일단 HTML 문서를 대상으로 하기 때문에
문서 안에 "charset=utf-8" 문자나 "charset=utf8" 문자가 있는지 확인하여
처리할 문서의 인코딩을 알아냈다. 이렇게 한 이유는 아래 인코딩 변환법으로 했을 때,
UTF-8문서를 EUC-KR로 읽어 버리면 오작동하기 때문이다.
참로고 파일 인코딩을 알아내는 방법은 아래 사이트에 잘 정리되어 있다.
http://www.perlmonks.org/?node_id=256728

2. 파일 변환


- 입력

 FileInputStream fr = new FileInputStream(fname_src);
 InputStreamReader ir = InputStreamReader(fr, "UTF8");
 BufferedReader br = new BufferedReader(ir);

위와 같이 UTF8인 파일은 UTF8로 지정해서 열어준다. InputStreamReader 설명을 보면 UTF8이 아닌 화일도 읽으면서 UTF8로 변환시킨다는 거 같이 써있는데 실제로 해보면 그렇지 않다. (해석이 틀렸을 수

- 출력

 fw = new FileOutputStream(fname_dest);
 ow = new OutputStreamWriter(fw,"EUCKR");
...
ow.write(line+"\n");
OutputStreamWriter 두번째 인자로 인코딩을 정해주면 실제로 문자셋을 저 인코딩으로 알아서 변환해서
파일에 저장한다. (utf-8로 적힌 line을 euckr로 변환시켜 파일에 저장함)

* 이번 삽질의 가장 큰 수훈은 울트라에디트였다. -_- 제대로 변환된 파일을 잘못 읽어 버려서 결과 확인이 어려웠다. 인코딩이 제대로 변환 됐는지 확인하려면 IE로 열고 마우스우클릭해서 인코딩 변경해 제대로 보이는지 확인하는게 제일 좋다.


 



핑백

덧글

댓글 입력 영역



메모장

이글루스를 함 써보렵니다