오늘 struts를 사용하면서 <html:link> 태그에서 한글깨지는 현상 때문에 거의 반나절을 삽질을 하였습니다. 역시 모르면 찾아봐야 한다는 걸 또 느끼게 된 하루였네요. ㅡㅡㅋ
struts 사용시
html:link 태그를 포함하여 RequestUtils 를 사용하는 Class 들에서 한글깨짐현상을 만날 가능성이 매우 높습니다.
이유는 RequestUtils 내의 encodeUrl() 메쏘드 내에서 URLEncoding 을 무조건 UTF-8 로 하도록 하드코딩 되어 있기 때문입니다.
따라서 html:link 태크에 Map 으로 넣은 파라미터 값 중에 한글이 들어가 있으면, UTF-8 을 사용하도록 페이지를 만들지 않으면, 한글이 전부 깨지게 됩니다.
다행히도 Struts 1.2.x 에서 부터는 이 부분이 개선되었습니다.
html:link 태그에 useLocalEncoding 속성이 추가되어 true일 경우 페이지의 encoding을 사용하여 URLEncoding을 하도록 변경되었습니다.
예를 들어
<html:link action="/Locale?language=한글">Korean</html:link>
이라고 정의했다면 "한글" 이라는 글자가 깨져서 전달되게 됩니다.
하지만
<html:link action="/Locale?language=한글" useLocalEncoding="true">Korean</html:link>
이렇게 바꾸어주면 현재 페이지의 encoding을 따르기 때문에 한글이 깨지지 않고 전달됩니다.
다른 분들은 이 글을 읽고 간단한 문제로 저 같이 오랜시간 삽질하지 않기를 바래요. ㅡㅡ;;;
참고 사이트 : http://www.okjsp.pe.kr/seq/48984