한글로 작성된 폼을 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에 적어줘도 한글이 정상적으로 변환된다.
처음에 에러의 예시로 보여줬던 폼에서 한글을 다시 전송해봤다.
외계어?가 아닌 한글인 "나나나" 적혀있는 것을 확인할 수 있다.