:: 세상의 중심 ::

웹서비스뿐만 아니라 어떤 서비스를 제공한다고 해도 서버설정방법에 대해 잘못알고 있거나, 실수를 했을 경우 겉으로는 제대로 동작하는 것처럼 보이지만 아주 미세한 차이로 잘못된 동작을 하고 있는 경우가 생기게 된다.

앞으로 볼 내용도 이런 경우 중 하나가 될 것이다.
처음에 Apache를 설치하고 구동시켰을 경우 웹사이트만 뜨면 사람들은 잘 된다고 생각하고 별다른 설정을 건드리지 않는다. 하지만 Hello World와 같은 정말 테스트용 사이트가 아닌 자신의 웹사이트를 홈페이지에 올릴려고 할 때부터 문제가 야기된다.

보통은 한글인코딩의 에러 때문에 애를 먹게 되는데, 이 때 웹사이트를 검색해보면 보통은 아파치설정을 바꿔서 기본적으로 모든 사이트가 한글로만 보이도록 만드는데만 주력한다.
이 경우 하나의 사이트만을 운영한다면 문제가 없겠지만, 웹호스팅을 한다던지 여러개의 사이트를 운영하는 경우라면 이야기가 달라진다 같은 한글을 사용해도 인코딩이 달라질 수 있기 때문이다.
예를 들면 euc-krutf-8과 같이 모두 한글을 표현할 수는 있지만 서로 표현하는 방식이 달라서 인코딩이 다를경우 아래와 같이 깨진 글자들을 보여주게 된다.

사용자 삽입 이미지

여기서는 두가지 방법을 살펴볼 것이다.
첫번째는 보통 인터넷에서 소개하고 있는 방법인 모든 사이트를 특정 인코딩으로 표현하는 방법이고,
두번째는 각 페이지마다 다른 인코딩을 사용할 수 있으며, 이 때 메타태그를 이용하여 인코딩을 써 주어야 한다.

여기서에서 메타태그가 익숙하지 않은 웹개발자가 있을 수 있겠으나 웹표준에 따르자면 메타태그를 이용하여 인코딩을 지정해주어야 하는 것이 정석이다. 그래야 어떤 환경에 대해서든 제대로 된 웹서비스를 할 수 있다.
그럼 두가지 설정방법에 대해서 알아보겠다.


1. 모든 웹사이트를 특정인코딩으로 오버라이딩하기

# httpd.conf 설정파일
AddDefaultCharset [인코딩코드]
Apache 설정파일(httpd.conf) 파일에서 위에 부분을 찾아서 인코딩코드에 해당하는 부분에 원하는 특정인코딩을 적어주면 된다.
이 때 Add라는 단어가 있어서 여러 개를 적어도 된다고 생각하시는 분이 있는데, 사실 여러개로 적는다고 해도 에러는 나지 않지만 맨 마지막에 써넣은 코드만 동작하게 된다.
사용하는 인코딩코드로는 보통 3가지가 있는데, 아래와 같다.

euc-kr  : 한국어
utf-8     : 한국어뿐 아니라 세계언어를 모두 표현할 수 있는 인코딩
ks_c_5601-1987 : 한글완성형

※ 이 기능을 사용하게 되면 META 태그를 이용하여 인코딩을 바꿀수 없다. (오버라이딩 되므로)

2. 각 페이지마다 메타코드로 다른 인코딩 허용하기

# httpd.conf 설정파일
AddDefaultCharset Off
Apache 설정파일(httpd.conf) 파일에서 위에 부분을 찾아서 설정을 Off로 해주면 된다.
물론 여러개 적어놓았던 AddDefaultCharset 이 있다면 모두 주석처리하거나 없애주어야 한다.
단, Apache 버전에 따라 틀릴 수도 있지만 보통 기본 UTF-8로 인코딩되어 표시되기 때문에 영문이 아닌 다른 언어를 사용하기 위해서는 페이지마다 META 태그를 사용해야 한다.

※ 메타태그 사용법은 아래 3번을 참조

3. 웹페이지 인코딩 설정 (META  태그)

<!-- <HEAD>부분에 삽입 -->
<meta http-equiv="Content-Type" content="text/html;charset=인코딩코드" />
인코딩 코드는 대부분 euc-kr과 utf-8을 많이 사용하며, 부가설명은 위에 1번을 참고하기 바란다.

※ 퍼가실 때는 꼭 Comment나 Trackback을 이용하여
    출처를 표기해주시기 바랍니다. (저작권 관련)


- realmind
Posted by bsh