서버 이전이나 새로운 아파치 설치 후 웹사이트에서 한글이 깨져서 보이는 경우가 있습니다. 이런 현상은 대부분 charset 설정이 제대로 되지 않아서 발생하는 문제입니다.

🚨 문제 증상

서버 이전 후 다음과 같은 증상이 나타납니다:

  • 웹페이지의 한글이 ? 또는 깨진 문자로 표시
  • 브라우저에서 인코딩을 수동으로 변경해야 정상 표시
  • 기존에 정상적으로 보이던 한글 콘텐츠가 깨짐
  • 데이터베이스에서 가져온 한글 데이터가 제대로 표시되지 않음

🔍 원인 분석

이러한 현상은 charset 설정이 안되어서 그럴 경우가 많습니다.

아파치 서버에서 기본 문자 인코딩이 설정되지 않으면, 브라우저가 적절한 인코딩을 추측해야 하는데 이 과정에서 한글이 제대로 해석되지 않아 깨짐 현상이 발생합니다.

📁 설정 파일 위치

문제를 해결하기 위해 다음 파일을 확인해야 합니다:

/etc/apache2/conf-available/charset.conf

🔧 현재 설정 확인

먼저 현재 charset 설정 파일의 내용을 확인해보겠습니다:

sudo nano /etc/apache2/conf-available/charset.conf

파일을 열어보면 다음과 같은 내용을 확인할 수 있습니다:

# Read the documentation before enabling AddDefaultCharset.
# In general, it is only a good idea if you know that all your files
# have this encoding. It will override any encoding given in the files
# in meta http-equiv or xml encoding tags.

# AddDefaultCharset UTF-8

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

보시다시피 AddDefaultCharset UTF-8가 주석 처리되어 있는 것을 확인할 수 있습니다.

✅ 해결 방법

1. 주석 해제

다음 라인의 주석을 해제합니다:

변경 전:

# AddDefaultCharset UTF-8

변경 후:

AddDefaultCharset UTF-8

2. 설정 활성화

charset 설정을 활성화합니다:

sudo a2enconf charset

3. 서버 재시작

설정 변경 후 아파치 서버를 재시작하거나 리로드합니다:

sudo service apache2 restart

또는

sudo service apache2 reload

🧪 설정 확인

설정이 제대로 적용되었는지 확인하는 방법:

1. HTTP 헤더 확인

브라우저 개발자 도구에서 Response Headers를 확인하면 다음과 같이 표시되어야 합니다:

Content-Type: text/html; charset=UTF-8

2. 명령어로 확인

curl -I http://your-domain.com

3. 아파치 설정 테스트

sudo apache2ctl configtest

💡 추가 고려사항

1. HTML 메타 태그와의 관계

AddDefaultCharset UTF-8 설정은 HTML 파일의 메타 태그보다 우선합니다:

<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

2. 가상 호스트별 설정

특정 가상 호스트에만 적용하고 싶다면:

<VirtualHost *:80>
    ServerName example.com
    AddDefaultCharset UTF-8
    # 기타 설정...
</VirtualHost>

3. 디렉토리별 설정

특정 디렉토리에만 적용하고 싶다면:

<Directory "/var/www/html/korean">
    AddDefaultCharset UTF-8
</Directory>

⚠️ 주의사항

  1. 기존 인코딩 확인: 모든 파일이 UTF-8로 저장되어 있는지 확인
  2. 데이터베이스 설정: MySQL 등 데이터베이스의 charset도 함께 확인
  3. 백업: 설정 변경 전 중요한 데이터는 반드시 백업
  4. 테스트: 프로덕션 적용 전 테스트 환경에서 먼저 확인

🔍 추가 문제해결

PHP와 함께 사용할 때

PHP 파일에서도 인코딩을 명시해주는 것이 좋습니다:

<?php
header('Content-Type: text/html; charset=UTF-8');
?>

.htaccess 파일 사용

디렉토리별로 .htaccess 파일을 사용할 수도 있습니다:

AddDefaultCharset UTF-8

📚 마무리

아파치 서버 이전 후 한글 깨짐 현상은 대부분 charset 설정 누락으로 발생합니다.

핵심 해결 단계:

  1. /etc/apache2/conf-available/charset.conf 파일 확인
  2. AddDefaultCharset UTF-8 주석 해제
  3. 설정 활성화 및 서버 재시작

이 방법으로 대부분의 한글 깨짐 문제를 해결할 수 있습니다. 만약 여전히 문제가 지속된다면 데이터베이스 charset 설정이나 PHP 설정도 함께 확인해보시기 바랍니다.


💡 : 새로운 서버 구축 시에는 처음부터 UTF-8 charset을 설정해두면 이런 문제를 예방할 수 있습니다!