2009. 12. 23. 14:57 was
charset 과 pageEncoding의 차이
[출저]
http://darkhorizon.tistory.com/entry/charset-%EA%B3%BC-pageEncoding%EC%97%90-%EB%8C%80%ED%95%B4
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR" %>
- contentType 속성 : JSP파일 출력시 문자코드 및 Content-Type 헤더에
출력할 문자코드명을 지정
- pageEncoding 속성 : JSP파일 작성시의 문자코드를 지정
자바가상머신(JVM)의 내부에서는 모든 문자열이 Unicode로 표현된다.
그러므로 서블릿 콘테너는 JSP파일을 JVM에 읽어들일 때 JSP파일의
문자코드(예를들어 EUC-KR)에서 Unicode로 변환한다.
그리고 웹브라우저에 HTML문서를 출력할 때는 Unicode로부터 출력파일의
문자코드로 변환한다.
■contentType 속성의 역할
contentType 속성은 "JSP파일 출력시의 문자코드", "Content-Type 헤더에
지정할 문자코드"의 양쪽을 지정하는 기능을 갖는다.
상기 코드와 같이 기술하면 서블릿 콘테너는 콘텐츠를 EUC-KR로
Encode하여 출력한다.
또한 동시에 Content-Type 헤더를 통하여 문자코드 종류를 웹브라우저에
전달한다.
■pageEncoding 속성의 역할
pageEncoding 속성은 "JSP파일 작성시의 문자코드"를 지정하기 위한
속성으로서 JSP 1.2사양(Tomcat 4.0) 이후부터 지원된다.
예를들어, 윈도우즈에서 작성한 JSP파일이면 EUC-KR를 지정하면 된다.
UNIX의 일본어 에디터로 작성한 것이라면 EUC-JP를 지정하면 바르게 처리될
것이다.
pageEncoding 속성을 생략한 경우, JSP 1.2 사양에서는
"contentType 속성에서 지정된 문자코드로 JSP파일을 읽어들임"
이라고 규정되어 있다.
그러므로 보통은 생략해도 문자깨짐이 발생할 염려는 없다.
그렇지만 EUC-KR -> Unicode -> EUC-KR 의 문자코드 변환은
기억해 둬야 한다.
또한 include 된 JSP파일에서는 contentType 속성을 기술할 수 없으므로
pageEncoding 속성을 이용할 필요가 있다.
이 문제에 대해서는 다음회에 설명할 예정이다.
덧붙여, contentType 속성과 pageEncoding 속성에는 각기 다른 문자코드를
지정할 수도 있다.
예를들어 ShiftJIS로 작성한 JSP파일을 EUC-JP,UTF-8등으로 출력하는 것도
가능하다.
'was' 카테고리의 다른 글
Apache Mod_Security (0) | 2010.02.17 |
---|---|
톰캣 시작시 JVM 옵션 설정 (0) | 2010.02.09 |
server.xml 설정 관련 (0) | 2009.12.08 |
톰캣 plugin url (0) | 2009.12.08 |
The Apache Tomcat Native library which allows optimal performance in production environments was not found (0) | 2009.12.02 |