Skip to Content
Suffering builds character

7. 문자 인코딩

1. 한글 깨짐 현상

서버에서 클라이언트로의 응답 메시지 전송 과정에서 기본적으로 포함해야 할 내용

  1. 보내는 데이터의 타입 - text/html인지, json인지 등
  2. 인코딩할 문자셋(Charset) 정보 - UTF-8인지, cp949인지 등

작성자(개발자)가 별도로 명시하지 않을 경우 응답 형식의 기본값으로 처리됨

  1. 기본 문서 타입 : text/html
  2. 문자셋 정보 : 8859_1(한글 지원 x)

따라서 다음과 같이 ???가 나오지 않게 하기 위해서는 응답 정보 헤더에 데이터의 문서 타입과 한글을 지원하는 문자셋을 설정해야함

resp.setContentType("text/html;charset=UTF-8");

2. 한글 깨짐 현상 처리

html에서 <meta charset = "UTF-8"> 확인

2-1. 한글이 깨지는 이유

encoding

같은 내용의 문자의 표현 방식이 프로그램 처리 진행 과정에서 매번 바뀌기 때문에 문자가 깨지게 됨

한글의 처리 방식은 GET과 POST가 서로 다름, 왜냐하면 질의 문자열의 전달 위치가 다르기 때문
→ GET은 요청 정보의 Header에, POST는 Body에 포함됨

2-2. POST 방식의 한글 처리

Servlet API에서 한글 처리용 메서드를 제공

HttpServletRequest.java
request.setCharacterEncoding("UTF-8"); // UTF8로 인코딩 처리

요청정보의 몸체에 있는 문자열들을 인코딩해주는 메서드, POST 방식에서는 데이터가 요청 정보의 몸체에 있음

2-3. GET 방식의 한글 처리

POST방식에서 사용한 setCharacterEncoding()는 요청 정보의 Body부분에 있는 정보만 인코딩해주기 때문에 GET방식에서는 다른 접근으로 인코딩 처리를 해야함

2-3-1. 클라이언트에서 인코딩하는 문자 코드
  1. <head>태그 내에 <meta charset="UTF-8"> 지정
  2. Eclipse 환경 설정 window → preferences → web → html files → 원하는 문자코드 지정
2-3-2. 서버에서 인코딩하는 문자 코드

톰캣 8이상 버전의 기본 문자코드는 UTF-8이기 때문에 수정하지 않아도 됨

Last updated on