서버에서 mysql euckr과 utf8 같이 사용하기

현재 제 서버에는 euckr로 운영중인 사이트만 있어 mysql 설정에서 디폴트 캐릭터셋을 euckr로 해둔 상태입니다. 기존 운영중인 사이트를 굳이 utf8로 변경할 필요가 없기 때문에.... 근데 이번에 신규로 개발하는 사이트부터는 utf8로 개발할 예정이라 부득이 하게 euckr과 utf8 을 동시에 사용하게 되었습니다. 여기서부터 삽질이 시작되었는데....
핵심적인 부분이 기존 운영중인 사이트에는 아무런 영향을 주지 않고 신규 사이트를 utf8로 운영할 수 있도록 할려고 합니다.
일단 적용에 성공했고 아래 자료는 참고자료를 바탕으로 100% 테스트해 본 결과입니다.

일단 디폴트 캐릭터셋을 utf8로 변경합니다.
my.cnf 변경

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

[mysql]
default-character-set=utf8

이렇게 변경합니다. (euckr -> utf8로)
mysql restart 합니다.

변경후 제대로 되었는지 확인합니다.
mysql> show variables like 'c%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | utf8                                   |
| character_set_connection | utf8                                   |
| character_set_database   | utf8                                   |
| character_set_filesystem | binary                                 |
| character_set_results    | utf8                                   |
| character_set_server     | utf8                                   |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
| collation_connection     | utf8_general_ci                        |
| collation_database       | utf8_general_ci                        |
| collation_server         | utf8_general_ci                        |
| completion_type          | 0                                      |
| concurrent_insert        | 1                                      |
| connect_timeout          | 5                                      |
+--------------------------+----------------------------------------+
14 rows in set (0.00 sec)

위와 같이 변경되었으면 정상적으로 변경된겁니다.

위와 같이 디폴트 캐릭터셋을 변경하더라도 기존 euckr사이트에는 아무런 영향이 없습니다.
(프로그램 변경이나 DB수정 작업은 필요치 않습니다)

여기에 utf8 사이트를 추가해 봅니다.
디폴터 캐릭터셋을 utf8로 했기 때문에 DB를 생성하시면 utf8로 생성이 됩니다.

그런후 일단 테스트로 그누보드 utf8 버전을 설치해 봅니다.
그냥 설치하시면 DB 한글이 깨집니다. 따라서 설치전 파일 2개를 수정하셔야 됩니다.

[ 그누보드 ]
DB를 euckr 과 uft8 을 같이 사용하는 경우 utf8 프로그램에 아래 부분을 추가해주어야 됨
common.php
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
mysql_query("set names utf8"); //utf8 설정 추가

install_db.php
$select_db = @mysql_select_db($mysql_db, $dblink);
mysql_query("set names utf8"); // utf8 설정 추가

이렇게 수정후 설치하시면 100% 모든 데이타가 utf8로 처리되고 phpmyamin 등에서도 euckr 과 utf8 모두 정상적으로 한글이 보입니다.

참고로 위에 부분이 그누보드 utf8 버전에는 기본적으로 포함되었으면 좋겠습니다^^ (영자님 참고해 주세요)

위에 방법말고 utf8 전용 서버에서는 프로그램 수정없이 my.cnf 를 아래와 같이 설정하시면 됩니다.
[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_query("set names utf8"); 를 추가하지 않아도 기본적으로 utf8로 모든 데이타가 처리됩니다.
단 euckr과 utf8 같이 사용하는 서버에서는 위와 같이 설정하시면 euckr 사이트가 정상적으로 동작되지 않습니다. 참고하시길...

한글문제로 고민하는 분들께 조금이나마 도움이 되었으면 좋겠습니다.

 

[이 게시물은 관리자님에 의해 2011-10-31 17:27:00 MySQL에서 이동 됨]
|

댓글 7개

: )..

euckr 과 utf8을 공존하시려면.. : )..

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

SET NAMES를 binary 로 맞추어보세요..
아참, euckr에 기존의 데이터가 존재한다면, 바이너리로 바꾸어주셔야합니다..^^..
저는 테스트 하여 성공하였는데..

혹 모르니, 우선 다시한번 테스트 해보세요 : )...
말씀하신 방법에 대한 자료도 봤습니다. euckr과 utf8을 같이 사용하기 위한 여러가지 다양한 방법중에 하나라고 생각하며 제가 제시한 방법도 그중에 하나일뿐입니다.
참고로 다양한 웹호스팅 환경을 고려한다면 프로그램쪽에 mysql_query("set names utf8"); 이 부분을 추가하는게 더 좋을 것 같다는 생각입니다. euckr 의 경우는 mysql_query("set names euckr"); 추가하면 더 확실하겠죠^^
좋은 정보 감사합니다.
아, 확실히 그방법이 제일 좋군요 : )..
더 좋은 정보 감사합니다 : ) !!
하이하바 님 말씀이 좀 더 일리 있어 보입니다. 그리고 호스팅용 서버는 euckr, 등 고객마다, 혹 웹프로그램마다 character set를 다르게 사용할 수 있기때문에 mysql_query("set names euckr"); 방식이 좀 더 현실적이라고 생각됩니다...

그리고.. 첨언으로, 서버호스팅 (웹호스팅 서버의 경우) 아래를 가정하여 봅니다.

1) 수십, 수백개의 계정이 있다.
2) 많은 프로그램이 있으며, character set 도 다양하여 euckr, utf8 등... 이 있다
3) 이 경우 /etc/my.cnf 는 기본값 (가장 많이 사용하는것) 으로 합니다. 예, /etc/my.cnf 를 아래첨 합니다. 다음에, 각 해당 웹 프로그램에서 원하는 character set를 지정하면 됩니다.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server = euckr
old_passwords=1

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
저의 테스트 서버는 하이하바님 방법으로
euckr과 utf8을 동시에 설치해서 사용하는지 오래되었습니다.
아직까지 아무런 문제점을 찾지 못했습니다...
아주 잘됩니다...^^
서버에서 mysql euckr과 utf8 같이 사용하기
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
17년 전 조회 1,828
17년 전 조회 1,769
17년 전 조회 1,559
17년 전 조회 1,407
17년 전 조회 1,359
17년 전 조회 1,170
17년 전 조회 1,164
17년 전 조회 1,191
17년 전 조회 1,197
17년 전 조회 1,613
17년 전 조회 1,693
17년 전 조회 1,833
17년 전 조회 2,968
17년 전 조회 2,111
17년 전 조회 1,780
17년 전 조회 2,114
17년 전 조회 1,832
17년 전 조회 3,365
17년 전 조회 1,547
17년 전 조회 1,673
17년 전 조회 1,386
17년 전 조회 2,199
17년 전 조회 3,146
17년 전 조회 2,284
17년 전 조회 1,743
17년 전 조회 2,995
17년 전 조회 4,447
17년 전 조회 1,758
17년 전 조회 3,252
17년 전 조회 1,580
17년 전 조회 3,498
17년 전 조회 5,851
17년 전 조회 1,434
17년 전 조회 2,170
17년 전 조회 1,800
17년 전 조회 1,543
17년 전 조회 2,430
17년 전 조회 2,640
17년 전 조회 1,604
17년 전 조회 2,696
17년 전 조회 3,186
17년 전 조회 1,537
18년 전 조회 1,954
18년 전 조회 3,860
18년 전 조회 4,494
18년 전 조회 1,882
18년 전 조회 1,744
18년 전 조회 2,684
18년 전 조회 1,865
18년 전 조회 3,948
18년 전 조회 1,657
16년 전 조회 1,942
18년 전 조회 2,274
18년 전 조회 2,125
18년 전 조회 3,582
18년 전 조회 1,595
18년 전 조회 2,667
18년 전 조회 1,655
18년 전 조회 1,922
18년 전 조회 7,440
18년 전 조회 2,011
18년 전 조회 4,104
18년 전 조회 2,434
18년 전 조회 2,443
18년 전 조회 2,165
18년 전 조회 2,209
18년 전 조회 2,631
18년 전 조회 3,226
18년 전 조회 5,338
18년 전 조회 2,796
18년 전 조회 2,710
18년 전 조회 2,564
18년 전 조회 1,811
18년 전 조회 2,221
18년 전 조회 5,324
18년 전 조회 3,036
18년 전 조회 2,600
18년 전 조회 3,272
18년 전 조회 2,491
18년 전 조회 2,846
18년 전 조회 5,881
18년 전 조회 2,627
18년 전 조회 2,022
18년 전 조회 2,659
18년 전 조회 1,487
18년 전 조회 9,812
18년 전 조회 4,468
18년 전 조회 3,298
18년 전 조회 1,821
18년 전 조회 3,614
18년 전 조회 2,298
18년 전 조회 3,737
18년 전 조회 5,189
18년 전 조회 3,845
18년 전 조회 2,682
18년 전 조회 2,952
18년 전 조회 2,462
18년 전 조회 2,797
18년 전 조회 1,909
18년 전 조회 3,454