2. 컴퓨터 이야기/프로그래밍

한글 문자셋 깨지지 않게 하려면, UTF-8 로 해야..

래빗 크리스 2010. 6. 16. 11:03

본 문건은 현재 작성중에 있습니다. 다만, 상태를 공개로 하였습니다.
잘못 기술된 내용이나 논란의 여지가 있는 부분은 댓글 바랍니다.

N-byte 문자셋을 제대로 구현하려면 DB 와 웹서버(어플리케이션서버 포함) 들을 모두 UTF-8 로 설정하면 됩니다.
그런데, UTF-8 이 아니라면.. 대략 난감하죠.
Java 도 내부적으로 스트림을 처리할때 UTF-8 을 사용하겠죠.
Ajax 도 내부적으로 UTF-8 을 이용합니다. 여러모로 UTF-8 로 세팅하면 정신건강에 이롭습니다.

그러나, UTF-8 로 구성되지 않았다면.. 어떻게 해야 할까요.
JSP 나 Servlet 에서 문자셋 처리를 해야 하겠지요.

JSP 에서 UTF-8 을 사용하려면 2가지가 있겠는데,
하나는 해당 JSP 문자셋을 UTF-8 로 전환하여 저장하는 것이 있고,
하나는 해당 JSP 에 문자셋을 기술하고 아스키로 저장하는 것입니다.

모든 JSP 에 아래와 같이 파일의 처음 부분을 설정합니다. 여기에서는 EUC-KR 을 예로 듭니다.
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
<% request.setCharacterEncoding("EUC-KR"); %>

웹서버에 따라서는

여기에 HTML 태그중 meta 태그를 명시하는 방법이 추가되어야 합니다.
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
그런데, JSP 들이 정적으로든 동적으로든 포함을 하는 경우라면 하나의 JSP 안에서만 meta 를 기술해야 하겠죠.


ps. 웹서버라고 하면 WS 를 말하기도 하고 WAS 를 말하기도 합니다. 특별한 경우가 아니라면 웹서버 = WAS 입니다.
소규모이면 WS 와 AS 로 서버를 구성하지 않고 하나의 WAS 로 서버를 구성합니다.
대규모로 전문화 되는 경우에는 한 두 대의 AS 와 여러 대의 WS 로 서버군을 구성하기도 합니다.
AS 와 WS 의 디렉토리 구조는 서로 동일하게 하기도 하고 서로 다르게 하기도 합니다.
서비스의 규모와 자금 규모에 따라 서버(군)을 구성하기 때문에 굉장히 다양한 조합이 가능한 겁니다.