인코딩 설정하기

콜라맘·2023년 6월 20일
0

JSP

목록 보기
10/17
post-thumbnail

🏁 JSP의 charset 설정

1. meta 태그의 charset

<meta charset="EUC-KR">
  • 이 페이지를 읽는 클라이언트의 웹 브라우저가 해당 페이지를 해석할 때 사용할 charset

2. contentType의 charset

  • 이 서블릿에서 응답하는 결과물의 타입 및 charset

3. pageEncoding의 charset

  • .jsp를 .java로 변환할 때(jsp를 서블릿으로 변환할 때)의 charset

4. 현재 페이지에서 Eclipse가 사용하고 있는 charset

  • 내가 하드디스크에 저장할 때 사용할 charset
  • 현재 파일 우클릭 후 properties에서 확인할 수 있다

🤺 GET 방식으로 한글 보내기

  • GET 방식 파라미터 값은 URL에 포함되어 전달되기 때문에 서버에서 해석한다 (서버에서 바꿔주면 된다)

✔ encoding.jsp >>

<li><a href="./encoding_test/servlet?taste=오렌지">서블릿으로 보내기</a></li>
<li><a href="./encoding_test/get.jsp?taste=콜라">.jsp로 보내기</a></li>

✔ EncodingTestServlet.java >>

@WebServlet("/encoding_test/servlet")
public class EncodingTestServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("한글 잘 나와? " + request.getParameter("taste"));
		response.sendRedirect("../encoding.jsp");
	}
}

📺 서블릿으로 보내기 출력 결과 >>


✔ get.jsp >>

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>한글이 잘 나오는지 보는 곳</title>
</head>
<body>
	<%= request.getParameter("taste") %>
</body>
</html>

📺 .jsp로 보내기 출력 결과 >>


😎 서버에서 charset을 바꾸는 방법 >>

Servers 폴더의 server.xml의 Connector에 URIEncoding="EUC-KR"을 추가


🤺 POST 방식으로 한글 보내기

  • POST 방식 파라미터 값은 요청 객체 내부에 실려서 서버에 도착하므로 URIEncoding으로는 해결되지 않는다
  • request.setCharacterEncoding("EUC-KR")로 요청 객체의 인코딩 방식을 설정하여 해결할 수 있다

✔ encoding.jsp >>

<li><button type="submit" form="form1">서블릿으로 보내기</button></li>
<li><button type="submit" form="form2">.jsp로 보내기</button></li>

<form id="form1" action="./encoding_test/servlet" method="POST">
	<input type="hidden" name="price" value="천오백원"/>
</form>
<form id="form2" action="./encoding_test/post.jsp" method="POST">
	<input type="hidden" name="price" value="이만오천원"/>
</form>

✔ EncodingTestServlet.java >>

@WebServlet("/encoding_test/servlet")
public class EncodingTestServlet extends HttpServlet{
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	request.setCharacterEncoding("EUC-KR"); // 여기를 추가하면 인코딩이된다
		System.out.println("가격은? "+ request.getParameter("price"));
		response.sendRedirect("../encoding.jsp");
	}
}

📺 서블릿으로 보내기 출력 결과 >>

✔ post.jsp >>

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    
<%
	request.setCharacterEncoding("EUC-KR");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>한글이 잘 나오는지 보는 곳(POST)</title>
</head>
<body>
	한글 데이터 : <%=request.getParameter("price") %>
</body>
</html>

📺 .jsp로 보내기 출력 결과 >>

profile
콜라맘 코딩일기

0개의 댓글