wrkbrs

[JSP] getParameter로 한글 받을때 / 한글 인코딩 / 한글 깨짐 본문

JSP

[JSP] getParameter로 한글 받을때 / 한글 인코딩 / 한글 깨짐

zcarc 2018. 11. 21. 13:56


<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"




NULL값인 경우 에러가 발생 할 수 있으니..

String param = request.getParameter("param");
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>




받을때는 그냥..

String param = request.getParameter("param");






경우에 따라서 파라미터를 받을때 페이지의 상단에..

<%@ page contentType="text/html; charset=euc-kr"%>

 

<%
    request.setCharacterEncoding("EUC-KR");
%>




위의 둘중 한 구문, 혹은 둘다 들어가야 할 수도 있다.








[참고] 한글 사용을 위한 서버 셋팅 관련 글!!
http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=957572615