마스터포유(Master4U)
Monday, 17 of January
 

로그인 Category
UFT8 에서 euckr로 변경 방법
관리자  2008-02-10 12:11:46 Hit:1853
링크 #1: http://blog.naver.com/neoi?Redirect=Log&logNo=120012933124

[펌] [mysql]uft8에서 euckr로 변경 방법

mysql

2005/05/10 00:05

출처 블로그 > 잊어 버리고 필요 할 때 찾자
원본 http://blog.naver.com/chang0c/120010955186

이미 입력된 데이타는 백업 후 다시 넣어 주어야 한다.

 

방법 1

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

 

방법 2

set names euckr;

 

저도 이 문제 때문에 골치 아팠던 적이 있습니다.

단순하게 set names euckr 을 해주시면 됩니다.

이 명령은 Server, Connection 의 문자셋을 euckr 로 설정합니다.

mysqld 의 시작옵션이나 my.cnf 의 [mysqld] 섹션에 default-character-set = euckr 옵션을 지정하면 Db, Client 의 문자셋이 euckr로 설정됩니다. mysql 프로그램에서 \s 를 해보면 확인할 수 있습니다. set names 대신 [mysql] 섹션에 default-character-set 을 사용할 수 있는데 이렇게 하면 4.1.8에서는 mysqladmin 이 해당 옵션을 이해하지 못해 제대로 실행이 안됩니다. 4.1.9에서는 mysqladmin 프로그램도 default-character-set 옵션을 사용할 수 있도록 변경되었습니다.

 

문자셋과 관련하여 주의할 점은 일단 latin1 등의 다른 문자셋으로 설정된 필드에 데이터를 입력한 후 alter 명령을 통해 해당 필드의 문자셋을 euckr로 설정하면 무자비하게 깨진다는 것입니다.

 

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 로 바꾸면 문자셋 특성이 사라지기 때문에 이런 변환과정을 거쳐야 합니다(메뉴얼에 의하면). 그냥 바꾸면 문자들이 손상됩니다.

 

바이너리 배포판에서 기본적으로 설정된 latin1 은 정렬을 위해 latin1_swedish_ci 을 사용하는데 이 경우 '이' 와 '인'이 같은 문자로 인식되는 식이어서 unique 키를 설정하는데 문제가 발생합니다. 이것은 latin1_bin 등의 collation 을 사용하여 해결할 수 있지만 이렇게 하면 영문자의 대소문자가 구분되어 버립니다.

본문인쇄본문메일발송
characterset 변경 (DB생성할때, 변경할때) [1]
MySQL 4.1.x 문자셋, 인코딩, UTF-8
Copyright 1999-2019 Zeroboard / skin by ChanBi