[TOMCAT] 파일 내부의 한글 깨지는 문제 (Dfile.encoding 추가하여 해결)

[TOMCAT] 파일 내부의 한글 깨지는 문제 (Dfile.encoding 추가하여 해결)

WAS는 TOMCAT이고, 아파치 없이 구동하는 경우였다.

사내 개발서버에서는 문제가 없었는데

고객사 서버에서 문자열이 깨지는 문제가 있었다.

보통 한글 깨지는 문제가 발생하면, Post 로 넘어갈 때는 문자열이 깨지지 않는데, Get 으로 넘어갈 때 문자열이 깨지는 경우다.

그렇다면 server.xml 의 Connector 태그에 URIEncoding=”UTF-8″ 어트리뷰트를 추가하면 된다.

ex) <Connector port=”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ />

해당 코드를,

<Connector URIEncoding=”UTF-8″ port=”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ />

위 코드와 같이 변경.

그런데 이번 문제는 파라미터가 깨지는 것이 아니라,

파일을 다운로드 받았을 경우 파일 내부의 한글 문자열이 깨지는 문제였다.

이미 Connector 태그에 URIEncoding=”UTF-8″ 이 추가되어 있었고,

Post 든 Get 이든 파라미터도 정상적으로 넘어가는 상황이었다.

멀티파트를 이용해 가져온 바이너리 파일 내부의 한글이 깨지는 문제였다.

실제로 HTML 파일을 다운로드 받아와서 열면, 그 안의 한글이 깨져 나오는 것이다.

해결 방법은 톰캣 카탈리나 옵션에 Dfile.encoding 을 추가하는 것이었다.

catalina.bat 에 아래와 같이 옵션을 추가해주었다.

set CATALINA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -Dfile.encoding=”UTF-8″

파일 인코딩이 UTF-8로 수행되어서 인지 더 이상 한글이 깨지지 않았다.

이번은 윈도우 서버여서 catalina.bat 을 수정하였는데, 리눅스라면 톰캣폴더/bin/catalina.sh 파일을 수정하면 된다.

* 관련 게시글 : 톰캣 펌사이즈 설정 (tomcat permsize) – java.lang.OutOfMemoryError (http://blog.naver.com/bb_/221066553152)