[JSP] 한글 인코딩 방식 GET, POST

JSP / Encoding

JSP에서 코드 작성하고 get, post방식으로 데이터를 주고받을 때 한글이 깨지는 경우가 많다.

POST와 GET방식에 따라 설정할 수 있는 방법이 다르다.

 

GET방식 한글 인코딩


1. 이클립스 Java EE / Servers / server.xml파일의 Connector 부분에 URIEncoding 추가 

기본적으로는 적혀있지 않으며 적혀있지 않는 경우 UTF-8이 기본값이다.

 

2. 이클립스 파일 생성시 기본 인코딩을 UTF-8로 변경 (혹은 EUC-KR로 변경 할거라면 Connector 부분에 UTF-8을 EUC-KR로 바꿔주자.)

이클립스 window -> Preferences -> encoding검색 -> Web 내부의 CSS, HTML, JSP 파일의 인코딩을 UTF-8로 변경

위의 설정을 완료하면 새로운 파일을 생성할 때 자동으로 UTF-8로 맞춰준다. (안하면 EUC-KR 기본)

 

3. 기존에 생성했던 JSP 파일의 인코딩 방식을 전부 통일 (기존에 생성해놓은건 자동으로 변경 X)

여기까지 전부다 변경했으면 get 방식으로 한글깨질일은 거의 없다.

 


POST방식 한글 인코딩 

POST 방식은 요청객체(request)내부에 실려서 도착한다.
JSP나 server.xml에서 설정하는게 아니고 값을 받는 서블릿영역에서 설정해주어야 한다.

예시

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	req.setCharacterEncoding("utf-8");
	System.out.println(req.getParameter("msg"));
}


POST방식은 request.setCharacterEncoding을 통해서 설정을 해주면 된다. (안될경우 여러가지 인코딩 방식으로 설정 해보길)

 


JSP 파일 내의 charset의 역할

1
2
3
4
5
6
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
cs

1. contentType - 서블릿 결과물의 종류 및 인코딩 타입을 설정한다.
(이걸 설정을 잘 해야 get방식의 통신에서 인코딩을 설정할 수 있다.)

2. pageEncoding - 이 JSP 코드들을 서블릿으로 변환할 때 사용할 charset을 의미

3. meta 태그의 charset - 클라이언트의 웹 브라우가 페이지를 해석할 때 사용할 charset을 설정

댓글

Designed by JB FACTORY