<% request.setCharacterEncoding("euc-kr");%>

 

요청 파라미터의 캐릭터 인코딩을 한글로 하기 위한 것.

 만일, 이 문장이 없을시 form을 통하여 넘어온 한글은 모두 깨져서 출력된다.

 

쉽게 말해서

<%@ page contentType="text/html;charset=euc-kr"%> 은

서버 -> 웹 브라우저 형태의 한글의 출력을 원활하게 해 주는 역할이며

 

<% request.setCharacterEncoding("euc-kr")%> 은

웹 브라우저 -> 서버 형태의 한글의 출력을 원활하게 해 주는 역할이다.

출처 -  http://blog.naver.com/adelraidae?Redirect=Log&logNo=10014875384 




[Tomcat/한글] 4.1.29 및 5.0.x 버전에서의 request.setCharacterEncoding 문제

파라미터의 한글처리를 위해 request.setCharacterEncoding 을 사용하거나 Characterset Encoding Filter를 사용할텐데요.. Servlet 2.3 스펙에 의하면 이것이 Request Body 에만 적용이 됩니다. 톰캣 4.1.29 및 5.0.x 버전에서는 이를 적용하여 request.setCharacterEncoding에 의해 설정된 인코딩이 POST방식의 파라미터에만 적용됩니다.  GET방식의 파라미터에는 적용이 되지 않네요.

GET방식의 파라미터가 들어있는 QueryString은 URIEncoding 에 설정된 캐릭터셋을 이용하여 처리합니다. 따라서, 한글이 깨지지 않게 하기 위해서는 URIEncoding 을 별도로 설정해 주어야합니다. 이는 %CATALINA_HOME%/conf/server.xml 내에 있는 HTTP 호출을 처리하는 Connector 에서 설정할 수 있습니다. 톰캣의 기본  HTTP Connector를 예로 들면 다음과 같이됩니다.

    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" URIEncoding="KSC5601"/>

마지막 속성인 URIEncoding="KSC5601" 이 URIEncoding의 캐릭터셋을 명시적으로 지정하는 속성이 되겠습니다.

혹시 톰캣 업글후 한글 파라미터때문에 고생하셨던 분이 계시다면 도움이 되길 바랍니다.


'Development > JSP & Servlet' 카테고리의 다른 글

contentType charset과 pageEncoding의 차이점  (0) 2012.03.28
jsp - *.jsp를 WEB-INF 아래에 숨겨라  (0) 2012.03.23
JSP  (0) 2012.02.05
서블릿 Invoker  (0) 2011.12.29
JSP와 HTTP 주석  (0) 2010.12.12
Posted by linuxism
,