GET 방식으로 파라미터 전송 시 인코딩 결정 규칙
GET 방식 이용 시 파라미터 전송 방법 |
인코딩 결정 |
1. <a> 태그의 링크 태그에 쿼리 문자열 추가 |
웹 페이지 인코딩 사용 |
2. HTML 폼(form)의 method 속성값을 "GET"으로 지정해서 폼을 전송 |
웹 페이지 인코딩 사용 |
3. 웹 브라우저에 주소에 직접 쿼리 문자열 포함한 URL 입력 |
웹 브라우저마다 다름 |
3번의 경우가 문제인데
IE이나 FF의 경우 EUC-KR 캐릭터 셋을 이용해서 인코딩을 하는 반면
사파리나 크롬의 경우는 UTF-8 캐릭터 셋을 이용해서 인코딩을 한다.
그래서 GET 방식으로 전달되는 파라미터 값을 인코딩 할 때 브라우저 마다 다르기 때문에
표준 인코딩 규칙을 정해야 한다.
GET 방식으로 전송되는 파라미터의 경우
request.setCharacterEncoding("UTF-8"); 이 적용되지 않는다.
방법은
1. server.xml 파일에서 <Connector>의 useBodyEncodingForURI 속성의 값을 true로 지정한다.
ex) <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
useBodyEncodingForURI="true" />
- 위와 같이 지정하면 GET 방식으로 전달된 파라미터 값을 읽어 올때
request.setCharacterEncoding() 메서드로 지정한 캐릭터 셋이 적용 된다.
2. server.xml 파일에서 <Connector>의 URIEncoding 속성의 값으로 원하는 캐릭터 셋을 지정한다.
ex) <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8" />
- 위와 같이 지정하면 GET 방식으로 전송된 파라미터 값은 항상 euc-kr로 처리된다.
출처: 최범균의 JSP 2.1 웹프로그래밍
사이트:
http://cafe.daum.net/javacan