- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[Tomcat] 한글 Encoding 문제 본문
예전부터 느끼지만 상용 WAS에 비해 Tomcat를 사용할 때마다 한글처리에 대해 신경쓸 것이 많았다.
지금은 그래도 많이 좋아졌지만 이번에도 한글문제가 발생해 이리 저리 또 찾아봐야 했다.
현상
어떤 때는 한글 처리가 되고 어떤 때는 한글 처리가 안되어 분석해 보니 POST 방식으로 전달하는 한글은 잘 처리되지만 GET 방식으로 전달하는 한글은 처리를 못하였다.
그럼 모두 POST로 한글을 전송? 음.. 이건 말도 안된다. RESTful하지도 않고 근본적인 해결방법이 아니다.
해결방법
tomcat 문서를 살펴보면 HTTP body의 입력 스트림은 기본으로 UTF-8을 이용하여 디코딩한다. 반면 URL은 ISO-8859-1으로 디코딩한다.
브라우저에서 Form 데이터는 기본설정으로 UTF-8 인코딩하므로 Form으로 전송되는 POST는 문제가 없었던 것이다. 그럼 tomcat의 설정에서 URL 인코딩 방법을 변경하기만 하면 문제는 해결된다.
conf/server.xml 에 다음과 같은 부분에 아래와 같이 URIEncoding을 UTF-8로 설정한다.
아파치와 연결하기 위해 mod_jk를 사용할 경우 mod_jk 설정부분에도 위와 동일하게 적용한다.
전제조건
물론 URL상의 모든 문자들은 UTF-8로 인코딩되어 있어야 하고 이는 WWW 컨소시엄의 권장사항이다.
다음과 같은 문자를 인코딩하려면 아래와 같이 하고 (JSP의 경우)
지금은 그래도 많이 좋아졌지만 이번에도 한글문제가 발생해 이리 저리 또 찾아봐야 했다.
현상
어떤 때는 한글 처리가 되고 어떤 때는 한글 처리가 안되어 분석해 보니 POST 방식으로 전달하는 한글은 잘 처리되지만 GET 방식으로 전달하는 한글은 처리를 못하였다.
그럼 모두 POST로 한글을 전송? 음.. 이건 말도 안된다. RESTful하지도 않고 근본적인 해결방법이 아니다.
해결방법
tomcat 문서를 살펴보면 HTTP body의 입력 스트림은 기본으로 UTF-8을 이용하여 디코딩한다. 반면 URL은 ISO-8859-1으로 디코딩한다.
브라우저에서 Form 데이터는 기본설정으로 UTF-8 인코딩하므로 Form으로 전송되는 POST는 문제가 없었던 것이다. 그럼 tomcat의 설정에서 URL 인코딩 방법을 변경하기만 하면 문제는 해결된다.
conf/server.xml 에 다음과 같은 부분에 아래와 같이 URIEncoding을 UTF-8로 설정한다.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
아파치와 연결하기 위해 mod_jk를 사용할 경우 mod_jk 설정부분에도 위와 동일하게 적용한다.
<Connector port="8009" protocol="AJP/1.3" URIEncoding="UTF-8"/>
전제조건
물론 URL상의 모든 문자들은 UTF-8로 인코딩되어 있어야 하고 이는 WWW 컨소시엄의 권장사항이다.
다음과 같은 문자를 인코딩하려면 아래와 같이 하고 (JSP의 경우)
<a href="show.xhtml?p=<%=java.net.URLEncoder("넥스트리소프트", "UTF-8")%>">넥스트리</a>
아래와 같이 렌더링 될 것이다.
<a href="show.xhtml?p=%EB%84%A5%EC%8A%A4%ED%8A%B8%EB%A6%AC">넥스트리</a>
물론 대부분의 웹 프레임워크들의 장치를 이용하면 이러한 인코딩은 알아서 해 주겠지만...
'★─IT Brain > ☆─Tomcat' 카테고리의 다른 글
[Tomcat] Tomcat 프로세스 강제종료 (0) | 2016.08.09 |
---|---|
[Tomcat] Eclipse에서 서버 구동시 Timeout 에러 (0) | 2016.07.26 |
[Tomcat] 이클립스 톰캣 404에러 (1) | 2016.05.31 |
Comments