레거시모음/JSP & Servlet

한글 인코딩 문제 해결 - 한글이 깨질 때 [JSP]

gakko 2022. 1. 18. 13:50

한글로 작성된 폼을 get이나 post를 활용하여 다루면 자꾸 한글이 깨지게 된다.

"나나나"라고 적어서 post방식으로 전송했지만 이상한 외계어가 출력되는 것을 확인할 수 있다.

어떻게 하면 이런 문제들을 해결할 수 있을까??

 

 

1. 일시적인 방법

한글 값을 받을 때마다 매번 request객체의 setCharacterEncoding()을 적는 것으로 해결할 수는 있지만

굉장히 귀찮다.

request.setCharacterEncoding("utf-8");
  • 한글을 변환 받는 곳 페이지마다 이것을 적어주면 한글변환이 정상적으로 된다.

 

 

 

2. 근본적인 문제 해결

하지만 이 귀찮은 문제를 한 번에 해결할 수 있다.

web.xml에 몇 가지만 적어주면 매번 적어줄 필요가 없다!!

 

 

- web.xml

<filter>
   <filter-name>SetCharEncoding</filter-name>
   <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
   </init-param>
</filter>
<filter-mapping>
  <filter-name>SetCharEncoding</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

위 정보만 web.xml에 적어줘도 한글이 정상적으로 변환된다.

처음에 에러의 예시로 보여줬던 폼에서 한글을 다시 전송해봤다.

외계어?가 아닌 한글인 "나나나" 적혀있는 것을 확인할 수 있다.