servlet, jsp
Character Encoding - 문자 처리
개발하는지호
2024. 1. 28. 15:41
1. 한글 깨짐
서버에서 클라이언트로의 응답 메시지 전송 과정에서 기본적으로 포함해야 할 내용이다.
- 보내는 데이터 타입 = text/html 인지, json 인지 등
- 인코딩 할 문자셋(Charset) 정보 = UTF-8인지, cp949 인지 등
작성자(개발자)가 별도로 명시하지 않을 경우 응답 형식의 기본값으로 처리된다.
- 기본 문서 타입 : text/html
- 문자셋 정보 : 8859_1(한글 지원 x)
따라서 다음과 같이 ???가 나오지 않게 하기 위해서는 응답 정보 헤더에 데이터의 문서 타입과 한글을 지원하는 문자셋을 설정해야한다.
resp.setContentType("text/html;charset=UTF-8");
2. Servlet 사용시 한글 깨짐 현상 처리
한글의 처리 방식은 GET과 POST가 서로 다르다. 왜냐하면 질의 문자열의 전달 위치가 다르기 때문인데, (GET은 요청 정보의 Header에, POST는 Body에 포함된다.)
POST 방식의 한글 처리
Servlet API에서 한글 처리용 메서드를 제공!
request.setCharacterEncoding("문자 처리 인코딩 코드");
요청 정보의 몸체에 있는 문자열들을 인코딩해주는 메서드, POST 방식에서는 데이터가 요청 정보의 몸체에 있다.
그리고 response 데이터를 깨짐없이 전송하기 위해서는
resp.setContentType("text/html;charset=UTF-8");
위에서 말한 코드를 작성해줘야 한다.