Database

mysql euckr 을 utf8 로 변경

컨텐츠 정보

본문

euckr 을 utf8 로 변경

0
points

euckr 을 utf8 로 변경 시 한글은 깨질수 밖에 없다니 당치도 않습니다.

euckr을 utf8로 변경하는 작업을 많이 했었는데, 아무런 문제 없이 utf8로 변경했었습니다.

주로 제로보드 이전 버전을 utf8로 변경하기 위해서 많이 했었죠.

아래 말씀드리는 사항은 euckr을 utf8로 변경하기 위한 제 나름대로의 팁입니다.

(utf8로 변경하는 방법은 아주 많기 때문에 아래 방법을 따르지 않아도 변환 가능하다는 점을 미리 말씀드립니다.)

1.

sql 파일을 생성할 때 4.1 버전부터는 default-character-set을 지정하지 않으면 utf8로 설정됩니다. mysqldump를 할 때 반드시 테이블의 문자셋과 동일한 default-character-set(즉 euckr)으로 지정해줘야 좋습니다.

mysqldump --default-character-set=euckr a > a.sql

2.

mysqldump로 만든 sql 파일을 iconv를 이용해 utf8로 미리 변환하는게 좋습니다.

eucKR 대신에 CP949를 쓰는게 더 좋을 경우가 많았습니다.

iconv -f CP949 -t UTF-8

3.

sql 파일에서 character set 관련 설정이 있다면 지우는게 작업이 편합니다.

CREATE TABLE `zetyx_admin_table` (
... 
) ENGINE=MyISAM DEFAULT CHARSET=euckr;

위 부분을 아래처럼 바꾸면 됩니다.

CREATE TABLE `zetyx_admin_table` (
... 
) ENGINE=MyISAM;

sql 파일 크기가 너무 커서 편집하기가 힘들다면 mysqldump를 할 때 스키마와 데이터를 분리해서 만들면 용량 작은 스키마 파일만 편집하면 되니 편합니다.

mysqldump --no-data --default-character-set=euckr a > a_schema.sql
mysqldump --no-create-info --default-character-set=euckr a > a_data.sql

테이블 스키마만 저장하기 위해서는 --no-data 옵션을 주면 됩니다. 반대로 데이터 insert문만 저장하기 위해서는 --no-create-info 옵션을 주면 됩니다.

4.

mysqldump를 할 때 옵션을 어떻게 줬느냐에 따라 sql 파일 내에 set names euckr이라는 부분이 들어가 있을 수 있습니다.

들어가 있다면 이 부분을 지우고

sql 파일 맨 앞에 아래 부분을 추가해주는 것이 좋습니다.

set names utf8;

5.

옮겨갈 서버 설정에 따라 불필요할 수 있습니다만, 데이터베이스를 만들 때 ut8을 명시해 주는 것이 좋습니다.

CREATE DATABASE  db_name DEFAULT CHARACTER SET utf8

데이터베이스를 만들었다면 다음과 같이 제대로 utf8로 설정되었는지 확인해보십시오.

mysql> USE db_name;
Database changed
mysql> SHOW VARIABLES LIKE '%DATABASE';
+------------------------+-----------------+
| Variable_name          | Value           |
+------------------------+-----------------+
| character_set_database | utf8            |
| collation_database     | utf8_general_ci |
| skip_show_database     | OFF             |
+------------------------+-----------------+

-- 

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
과거를 아프게 들여다보지 말라. 그것은 다시 오지 않는다. 현재를 슬기롭게 이용하라. 그것은 그대의 것이다. 힘찬 기상으로 두려워말고 나아가 무지개를 맞으라.