[APACHE TOMCAT] 아파치톰캣 한글깨짐 / 한글 파라미터 깨지는 문제
아파치 httpd 웹서버를 통하면 한글 파라미터가 깨지는 현상이 있었다.
문제는 톰캣으로 접근하면 한글이 깨지지 않는데,
아파치 httpd를 통해서 접근했을 때는 한글 파라미터가 깨졌다.
특히 한글 파라미터를 encodeURIComponent 함수를 통해 UTF-8로 encode하여 URL에 붙여줬는데도 이러한 현상이 발생했다.
아파치를 거쳐가면 한글이 깨지고, 곧바로 톰캣으로 들어가면 한글이 깨지지 않으니
아파치 쪽이 잘못되었다고 생각해서 계속 httpd.conf를 고치려 했는데 문제는 톰캣에 있었다.
톰캣 폴더 하위의 conf 폴더 내의 server.xml 을 보면 톰캣 커넥터가 2개 존재한다.
Connector 태그가 2개 있다는 뜻이다.
첫째로
<Connector connectionTimeout=”20000″ port=”9090″ protocol=”HTTP/1.1″ redirectPort=”9443″/>
를
<Connector connectionTimeout=”20000″ port=”9090″ protocol=”HTTP/1.1″ redirectPort=”9443″ URIEncoding=”UTF-8″/>
로 수정해야 하며,
둘째로
<Connector port=”9009″ protocol=”AJP/1.3″ redirectPort=”9443″/>
를
<Connector port=”9009″ protocol=”AJP/1.3″ redirectPort=”9443″ URIEncoding=”UTF-8″/>
로 수정해야 한다.
첫번째 부분을 수정하지 않으면 Get방식으로 한글 파라미터를 넘길 때, 톰캣 단에서 한글이 깨지게 된다.
두번째 부분은 AJP 프로토콜 관련인데 AJP 프로토콜은 아파치와 톰캣을 이어주는 포트이다.
따라서 두번째 부분을 수정하지 않으면 Get방식으로 한글 파라미터를 넘길 때, 아파치를 통해 톰캣으로 넘어가는 과정에서 한글이 깨지게 된다.
필자의 경우 첫번째 부분만 고쳐두었기 때문에 톰캣으로 접근할 때는 문제가 없었고,
아파치를 통해 톰캣으로 접근할 때만 문제가 발생한 것이다.