2010년 2월 1일 월요일

java.util.jar 또는 java.util.zip package 사용시 한글 인코딩 문제

Java로 파일을 압축하는 경우 가장 많이 쓰이는 방법은 java.util.jar 또는 java.util.zip 라고 생각된다. java.util.jar package 역시 java.util.zip package 를 상속 받은 것이니 결국 둘은 같은 로직을 사용한다.

 

이 두 package는 내부적으로 UTF-8 encoding을 사용한다. 그래서 해당 package를 사용하는 경우에는 UTF-8을 사용하지 않은 압축 프로그램(경험한 바로는 빵집)에서는 한글이 깨지는 문제가 발생한다. 해당 버그는 4244499 버그로 몇년동안 Top 25 Java Bugs 에서 1등을 한 전적을 가지고 있었다고 한다.

 

현재의 JDK 최신버전에서도 encoding 타입을 지정해 줄수는 없기 때문에 해결은 책은 없다. 다만 OpenJDK 7을 사용하면 encoding을 지정할 수 있다고 한다. 추후 JDK에서는 수정될 가능성이 많다고 할 수 있다.

 

java.util.jar 또는 java.util.zip package 사용하여 압축을 하고 테스트를 위해 PC에서 압축 프로그램을 이용하여 파일을 연 다음 한글이 깨진다면 위에서 말한 버그일 가능성이 많다.

 

PS) 빵집을 언급하기는 했지만 빵집의 문제는 아니다. Java의 문제이다. 빵집은 개인적으로 아주 고맙게 잘 사용하고 있는 프로그램 중에 하나이다.

댓글 없음:

댓글 쓰기