It’s me

December 6, 2006

tomcat에서 한글문제 해결 팁

Filed under: JAVA — rothmans @ 3:19 am

tomcat에서 한글문제 해결 팁

한글을 파라메터로 넘길때 글자가 깨지는것은 다음의 이유에서이다.

HTML(JSP)에서 <FORM>태그를 사용하여 파라메터를 넘길때 아무설정을 하지 않으면
톰캣은 기본문자셋을 ISO8859_1로 인코딩한다.

따라서 브라우저에서 보면 한글이 깨져보인다.

이를 해결하기 위해 모든 JSP파일에 다음과 같이 request에 대해 문자셋인코딩을 설정해주면 한글파라메터가 깨지는 것을 해결할 수 있다.

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

그러나 매 페이지마다 위의 코드를 넣어주는것은 비효율적이다.
Filter를 사용하여 이것을 해결할 수 있다.

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class EncodingFilter implements Filter {

 private FilterConfig m_config = null;
 private String m_encoding = "euc-kr";

 public void init(FilterConfig config) throws ServletException {
  m_config   = config;
  m_encoding = config.getInitParameter("encoding");
  System.out.println("EncodingFilter.init().... " + m_encoding);
 }

 public  void doFilter(ServletRequest srequest, ServletResponse  sresponse, FilterChain chain)
  throws IOException, ServletException {

  HttpServletRequest request = (HttpServletRequest)srequest;
  request.setCharacterEncoding(m_encoding);
  System.out.println("EncodingFilter.doFilter().... " + request.getRequestURI()+":"+request.getCharacterEncoding());
  // move on to the next
  chain.doFilter(srequest, sresponse);
 }

 public void destroy() {
  m_config = null;
  m_encoding = null;
 }
}

web.xml에 넣어야 할 놈..

<web-app>
  <display-name>developerclub.com</display-name>
  <description>developerclub.com</description>
 
  <filter>
  <filter-name>EncodingFilter</filter-name>
  <display-name>EncodingFilter</display-name>
  <description>no description</description>
  <filter-class>EncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>euc-kr</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>EncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

</web-app>
 

No Comments Yet »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.