아래에 소개될 방법은 MySQL 4.1.x에 적용될 수 있으며, 자세한 내용은 MySQL 설명서를 참고.
전체 서버의 기본 언어 인코딩을 UTF-8으로 설정
서버에 있는 my.ini(windows) 혹은 my.cnf(Unix)파일을 찾습니다. Unix일 경우, 보통 /etc/my.cnf에 위치하고 있으며, 없다면 새로 만들어야 합니다. 기본 설정 파일은 MySQL 소스 코드와 함께 딸려오는 support-files 폴더 안에, 용도별로 여러개의 설정 파일들이 있으며, 자신의 서버 환경에 맞는 설정 파일을 골라서 이 것을 기준으로 수정해 주면 됩니다. Windows용 설정 파일은 보통 C:\Windows\my.ini에 위치하고 있습니다.
설정 파일을 열고, [mysqld] 설정 부분에 default-character-set 변수 설정 내용을 다음과 같이 변경/추가합니다.
[mysqld]
default-character-set = utf8
저장하고 MySQL 서버를 재시동하면, 다음에 생성되는 데이타베이스들부터 적용됩니다.
주의할 것은, 여기에 default-collation 변수값을 설정해 줄 필요는 없으며, MySQL 서버가 character set에 적당한 값을 알아서 결정하게 됩니다.
참고 – MySQL 서버의 시스템 변수들
개별 데이타베이스의 기본 언어 인코딩 값을 UTF-8으로 설정
만약, 사용하고 있는 MySQL 어플리케이션들이 다른 언어 인코딩을 사용해서 전체 서버의 기본 언어 인코딩을 UTF-8으로 설정해 줄 수 없다면, 데이타베이스 생성시 다음과 같은 명령으로 특정 데이타베이스의 기본 언어 인코딩을 설정해 줍니다:
CREATE DATABASE 데이타베이스_이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ISP에서 제공한 지정 데이타베이스의 기본 인코딩 변경
전체 서버 설정 권한이 ISP에게 있을 경우에는, 지정된 데이타베이스의 테이블을 생성하기 전에 다음과 같은 명령을 줍니다:
ALTER DATABASE 데이타베이스_이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
이전 데이타베이스의 언어 인코딩을 UTF-8으로 변환
우선, 기존 데이타베이스를 따로 저장한 후에, 다음과 같이 내용을 추출해 냅니다:
mysqldump -uusername -ppassword
추출해 낸 내용을 UTF-8으로 변환(MySQL의 기본 인코딩은 latin1):
iconv -f 기존_인코딩 -t UTF-8 oldencoding.sql > UTF8database.sql
변환한 내용을 기존 데이타베이스로 복구:
mysql -uusername -ppassword my_database < UTF8database.sql
참고 – MySQL가 지원하는 Character Sets와 Collations
꼬리표: iconv, MySQL, UTF 8
최근 댓글