Dev/JSP & Servlet

JSP - 캐릭터 인코딩, 디코딩

창문닦이 2019. 2. 19. 23:17

한글의 경우 UTF-8 인코딩을 하지 않으면 페이지가 깨지는 오류가 발생한다. 간단한 예제를 통해서 캐릭터 인코딩 & 디코딩을 진행해보자.

1. 한글데이터 전송 페이지 - for1.jsp

<%@page import="java.net.URLEncoder"%>

<%@ page contentType="text/html; charset=UTF-8"%>

<%

//request.setCharacterEncoding("UTF-8");

String eng = "test";

String kor = "테스트";

String han = URLEncoder.encode(kor, "UTF-8");

%>

<jsp:forward page="for2.jsp">

<jsp:param value="<%=eng %>" name="eng"/>

<jsp:param value="<%=han %>" name="kor"/>

</jsp:forward>

2. 한글데이터 출력 페이지 - for2.jsp 

<%@page import="java.net.URLDecoder"%>

<%@ page contentType="text/html; charset=UTF-8"%>

<%

//request.setCharacterEncoding("UTF-8");

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

String kor =request.getParameter("kor");//인코딩해서 전달되므로 깨지지 않지만 읽을 수 없는 문자

String han = URLDecoder.decode(kor, "UTF-8");//디코딩 작업을 해서 한글이 읽힘

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

포워딩된 데이터<br>

eng : <%=eng %><br>

kor : <%=kor %><br>

han : <%=han %><br>

</body>

</html>

3. 출력 페이지