wrkbrs
[JSP] getParameter로 한글 받을때 / 한글 인코딩 / 한글 깨짐 본문
<a href="list.jsp?name=<%= name%>">list로 이동</a>
이런식으로 인자값의 name이 한글이라면
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
이 에러가 발생했다.
저 name 변수에 한글이 아닌 영어로 바꾸면 에러가 나지 않았다.
자바스크립도에서도 저 에러가 났었다. 하지만 검색을 해보면
자바스크립트에서 JSP로 이동할 때 발생하는 에러가 대부분이었다.
<a href="list.jsp?name=<%= URLEncoder.encode(name, "UTF-8")%>">list로 이동</a>
이런식으로 하면 정상적으로 작동된다.
-------------------------------------
<첫번째 방법>
String param = new String(request.getParameter("param").getBytes("8859_1"), "EUC-KR");
//옵션: "EUC-KR", "UTF-8", "KSC5601"
//옵션: "EUC-KR", "UTF-8", "KSC5601"
NULL값인 경우 에러가 발생 할 수 있으니..
String param = request.getParameter("param");
if(param != null) param = new String(param.getBytes("8859_1"), "EUC-KR");
if(param != null) param = new String(param.getBytes("8859_1"), "EUC-KR");
<두번째 방법>
보내는 페이지에서 인코딩을 하여 보내준다
<@ page import="java.net.URLEncoder" %>
<a href='test.jsp?param=<%=URLEncoder.encode("한글문자열", "EUC-KR")%>'>링크</a>
<a href='test.jsp?param=<%=URLEncoder.encode("한글문자열", "EUC-KR")%>'>링크</a>
받을때는 그냥..
String param = request.getParameter("param");
경우에 따라서 파라미터를 받을때 페이지의 상단에..
<%@ page contentType="text/html; charset=euc-kr"%>
<%
request.setCharacterEncoding("EUC-KR");
%>
request.setCharacterEncoding("EUC-KR");
%>
위의 둘중 한 구문, 혹은 둘다 들어가야 할 수도 있다.
[참고] 한글 사용을 위한 서버 셋팅 관련 글!!
http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=957572615
'JSP' 카테고리의 다른 글
웹 개발하면서 처리해야할 보안, 최소한의 방어, 정보보안 (0) | 2019.01.16 |
---|---|
[JSP] 에러 심각: ContainerBase.addChild: start: (0) | 2018.11.22 |
[JSP] jsp와 servlet(java파일)의 session 객체 (0) | 2018.11.15 |
[JSP] Servlet <-> DB 연동 한글깨짐 처리 (0) | 2018.11.14 |
[JSP] uri 경로 가져오는 메소드 (0) | 2018.11.07 |