본문 바로가기

Projects/Server

mysql 문자셋 인코딩 관련

기존 버전에서는 "euc-kr"로 표기되는 문자셋이 "euckr"로 바뀌었다.

/etc/my.cnf

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

JDBC Driver URL

jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=UTF8

현제 문자셋 정보 보기

show variables like 'c%';
- 결과
character_set_client : utf8
character_set_connection : utf8
character_set_database : utf8
character_set_results : utf8
character_set_server : utf8
character_set_system : utf8
character_sets_dir : /usr/share/mysql/charsets/
collation_connection : utf8_general_ci
collation_database : utf8_general_ci
collation_server : utf8_general_ci

이미 생성된 DATABASE의 문자셋 바꾸기

mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;

이미 데이터가 들어간 테이블의 문자셋 변환

create table test (merong varchar(20) collate latin1_general_ci);

이렇게 만들어진 테이블에 한글 데이터를 넣은 후 필드를 euckr 로 변경하려면
다음처럼 해야 합니다.

alter table test modify merong binary(100);
alter table test modify merong varchar(20) collate euckr_korean_ci;

binary 로 바꾸면 문자셋 특성이 사라지기 때문에 이런 변환과정을 거쳐야
합니다(메뉴얼에 의하면). 그냥 바꾸면 문자들이 손상됩니다.
참조 : Database.sarang.net에 올라온 글