본문으로 바로가기

리눅스 문자셋(charset) 설정

category 리눅스/Linux 일반 2013. 11. 24. 16:35

문자셋 설정하는 방법을 한데 모아 보았습니다. 우선순위에 유념하여 설정하길 바랍니다.

문자셋 우선순위

아파치 웹서버 설정파일에 문자셋을 지정할 수 있다. 하지만 HTML 문서등을 작성할때 문자셋을 지정하면 이 값이 다른 값보다 우선시된다. php 설정에서도 기본 문자셋을 지정할 수 있다.

서버에서 문자셋 설정하기

Apache 웹서버 UTF-8 설정

httpd.conf 에 추가하면 되는데 리눅스 배포판 별로 다르다.

AddDefaultCharset UTF-8 

PHP UTF-8 설정

php.ini 에서 다음과 같이 수정 한다.

[PHP]
default_charset = "UTF-8"
output_handler = mb_output_handler

[mbstring]
mbstring.language = UTF-8
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8                    
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;

[PHP_MBSTRING]
extension=php_mbstring.dll

MySQL UTF-8 설정

my.cnf 파일을 수정한다.

[client]
default-character-set = utf8

[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8 
collation-server = utf8_general_ci

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

코딩시 직접 문자셋 설정하기

HTML 설정

HTML 파일을 UTF-8로 만들어 저장한다.

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

XML 설정

XML 파일을 UTF-8로 만들어 저장한다.

<?xml version="1.0" encoding="UTF-8" ?>

CSS 설정

# css 파일의 맨 위에 지정한다.

@charset "utf-8";

PHP 설정

서버에 지정된 문자셋을 무시한다.

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

Javascript 설정

HTML 문서의 문자셋과 상관없이 인식된다.

<script type="text/javascript" src="path/file.js" charset="utf-8"></script>

상황 예제

출처 :https://lael.be/116

1. 서버 설정 부분에 httpd.conf 에서 기본언어설정안함

# AddDefaultCharset UTF-8 

2. php.ini 에서 기본언어설정안함

; default_charset = "iso-8859-1" 
; default_charset = "utf-8" 

3. my.cnf 에서 캐릭터셋 수정

[client] 
#password = your_password 
default-character-set=utf8 

[mysqld] 
init_connect=SET collation_connection = utf8_general_ci 
init_connect=SET NAMES utf8 
default-character-set=utf8 
character-set-server=utf8 
collation-server=utf8_general_ci 

[mysql] 
default-character-set=utf8 

위 상태에서 아래 두가지 버전 모두 운영이 가능하다.

  • 그누보드4 UTF-8 : 한글 입출력 아무이상없음
  • 그누보드4 EUC-KR : 한글 정상출력(phpmyadmin 에서만 한글이 깨짐)

httpd.conf 에서 AddDefaultCharset UTF-8로 지정할경우는

  • EUC-KR 버전은 한글 깨지는데 브라우저에서 인코딩을 지정하면 정상출력
  • 새로고침하면 다시 한글깨짐