Right now do !

Intellij + TOMCAT + Windows 콘솔 모두 UTF-8

by 지금당장해

 필자는 개발과정에서 일어나는 트러블 중 싫어하는 것을 꼽으라면 1~2등을 다투는 주제가 Charset 관련된 일이다. 정말 짜증 난다. 이 좁은 지구에 무슨 언어는 이렇게 많고 자연어가 많은 것은 그렇다 치고 다국어 처리를 설계한 작자들은 왜 하나로 통일하지 못하고 Charset을 만들어야 했을까? 불평하기엔 너무 늦었다. 각설하고 오늘 또 관련된 고통을 격었기에 오늘은 정리하고 가려한다. (이제 적어 놓지 않으면 머릿속에 지우개가 흔적도 없이 싹 지운다.) 

 

 톰캣의 valve를 POC하는 미션을 수행 중인데 Intellij에서 톰캣을 물려 기동을 시켰는데 톰캣이 내보는 한글에 가차 없이 깨진다. 일단 여기부터 삐딱선이다. 그리고 TOMCAT 9를 윈도 콘솔에서 실행을 시켰더니 여기도 깨진다. 그리고 내가 작성한 톰켓 valve에서 out.println을 이용하여 한글 문자열을 찍었는데 이도 깨진다. 

지금 내가 언급한 요소가 총 3가지 이다. Intellij, TOMCAT, Windows 콘솔 이 세 가지 모두 설정이 필요한 요소이다. 

 

 일단 Tomcat은 한글OS로 확인이 되면 한글 리소스를 가지고 있어 이를 UTF-8로 출력해주는 것으로 알고 있다. 따라서 내가 해야 할 일은  Tomcat process가 관여된 모든 요소를 UTF-8로 바꿔주는 것이다.

 

1) Intellij의 모든 Encoding을 UTF-8로 설정 

 

Intellij Settings에서 encoding으로 필터링 하여 모든 Encoding요소를 UTF-8로 바꾸었다.

Intellij에서 모든 인코딩을 UTF-8로 설정

2) Tomcat의 컨테이너를 실행하는 catalina.bat에서 JAVA 실행 옵션에 Encode정보를 설정

이 설정의 경우 리눅스경우에는 sh파일을 수정해야 할 것이고 같은 윈도라고 해도 서비스를 기동 시킬 때는 자체 설정 프로그램을 이용하여 설정하는 것으로 알고 있다. 허니 해당 조건으로 사용하는 독자는 별도로 자료를 찾아보기 바란다.

 

해당 배치파일은 무지하게 길다. 이를 모두 나열 할 수는 없고 필자가 추가한 라인만 설명하겠다. 결구 자바 실행 옵션에 -Dfile.encoding=UTF-8를 추가하는 것이 골자인데, 필자는 JAVA_OPTS가 등장하는 가장 처음에 이를 설정하였다. 이후에 등장하는 원래 있던 문항들은 처음 설정된 java command 옵션을 계속 붙여나가는 패턴이기 때문에 사실 어디에 두어도 상관없을 듯하다. (그 아래 라인은 원래 있는 옵션이니 삽입할 위치를 찾을 때 참고하기 바란다.)

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"

 

3) Tomcat을 실행하는 Windows 콘솔의 CodePage설정

이 설정이 가장 난관이었는데, 오기가 나서 찾아봤다. 시스템 레지스트리까지 변경해야 한다. ㅠㅠ 아래 그림처럼 콘솔에서 startup.bat를 실행해야 하면 java 아이콘이 달려있는 Tomcat 콘솔아웃 창이 나타나는데 이 창의 CodePage설정이 UTF-8의 숫자 코드인 65001이어야 하는데 디폴트 설정은 949였다.

안타깝게도 이를 변경할 수 있은 UI를 없다. 시스템 레지스트리를 열어 아래와 같이 편집한다.

 

참고로 해당 시스템 레지스트리의 경로는 다음과 같다. HKEY_CURRENT_USER\Console\Tomcat

 

이번 글은 필자의 전문 분야도 아니고 헤매다. 경험적으로 찾아낸 결과 이므로 그 과정이 그 어떤 기술적 근거를 명확히 하지 못한다. 따라서 독자가 더 정확한 정보를 알고 있다면 의견을 남겨 주기를 부탁한다.

블로그의 정보

지금 당장 해!!!

지금당장해

활동하기