웹에서의 한글처리 방법과 인코딩을 공부중인 신입입니다. 한글처리 관련 삽질을 하다보니 한번 정리해야 할 것같아서 문서로 남깁니다.. 제가 착각하고 있는 부분이나 틀린부분 지적해 주시면 감사하겠습니다 :)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR" %>
charset -> jsp 페이지 출력 시 사용할 문자코드
pageEncoding -> jsp 파일 작성 시 사용할 문자코드
자바 가상머신(JVM) 내부에서는 모든 문자열이 unicode로 처리된다. 따라서 서블릿 컨테이너는 jsp을 jvm으로 읽어들일 때
pageEncoding설정한 문자코드에서 unicode로 변환한다.
그리고 웹 브라우저에 html문서를 출력할 때는 unicode에서 charset에 설정한 문자코드로 변환하여 출력한다.
contentType에 설정한 값을 통하여 브라우저에게 문자코드 정보를 전달한다.
인코딩과 디코딩이란?
인코딩은 문자를 숫자로 매핑하는 방법이고 , 디코딩은 매핑된 숫자를 문자로 매핑하는 방법이다.
request.setCharacterEncoding()
요청 파라미터의 캐릭터 인코딩을 설정(jsp -> servlet)
response.setCharacterEncoding()
요청 받는 파라미터의 캐릭터 인코딩을 설정.(servlet -> jsp)
--> 해당 서블릿마다 위와같은 처리를 하는 것은 매우 번거로운 일임. 게다가 문자코드를 변경할 일이 생기면 모든 서블릿을 변경해야하는 큰 일이 생겨버림.. 그래서 filter를 사용하여 일괄적인 문자코드 관리가 가능함.
Get방식의 한글처리
-> tomcat의 web.xml 의 uridecoding 설정을 변경 utf-8 한다.