MySQL5 UTF-8 설정 by Joo8111

웹에서 그동안 euc-kr만 사용하다가 UTF-8을 써야겠다는 생각이 들어 모든 환경을 UTF-8로 바꾸고 있다.
개발환경은 eclipse의 PDT plug-in을 사용하고 서버로는 xampp를 사용한다.
eclipse나 HTML등은 그저 UTF-8을 사용한다고 명시만 하면 되서 별 문제없이 하고 있었는데 문제가 생겼다.

phpmyadmin에서 입력된 값을 확인하려는데 글씨가 와장창 깨지는 것이었다.
mysql을 UTF-8로 설정하지 않아서 그런 것 같아서 my.cnf의 [mysqld] 부분에

character-set-server = utf8
collation-server = utf8_general_ci
default-character-set=utf8

를 추가하였다.
그러고나서 다시 확인하였으나 여전히 문제는 고쳐지지 않았다.
mysql shell에서 환경변수를 확인결과

이렇게 나타났다.
서버는 utf8을 나타내나 client관련해서는 latin1이 나타났다.

도무지 방법이 생각나지 않아서 고민하다가.. (사실 제대로 검색을 못하고 있다가..)
결국 알아냈다.

my.cnf [mysqld] 부분에
skip-character-set-client-handshake

이 한줄을 추가함으로 모든 문제는 해결되었다.

정상적으로 모두 utf8로 표시되었고
이후의 모든 입출력도 깔끔히 해결되었다.

skip-character-set-client-handshake
이 것은 서버에서 client의 문자 인코딩을 무시하고 서버의 설정만을 따르는 것인데..
아무래도 사용하고 있는 운영체제(Windows XP)가 기본 인코딩을 cp949로 사용해서 생기는 문제같다.

어쨌든 대략 반나절의 삽질을 마무리하고 다시 하던 일을 하게 되었다.

덧글

  • Platanus 2007/07/25 00:42 # 답글

    my.cnf파일내에 [client] 부분을 따로 만드셔서
    default-character-set=utf8 를 추가하셔도 될겁니다 :D
  • Joo8111 2007/07/25 14:53 # 답글

    Platanus // 저도 그 부분을 넣으면 되는 줄 알았는데 전혀 소용없었습니다.
    안되더군요. 저 위에 있는 건 [mysqld] 부분이고..
    [client]에는 default-character-set=utf8 추가 되어 있습니다.

    한글인코딩 때문에 불편이 이만저만이 아니군요.
    윈도우와 리눅스 환경을 같이 쓰는데 공유하는 드라이브의 윈도우 작업문서를 리눅스에서 열면 다 깨집니다. Ubuntu는 기본적으로 UTF-8을 쓰고 윈도우는 cp949를 쓰기 때문인 듯 합니다.

    윈도우도 모든 것을 UTF-8로 쓸 수는... 없을 것 같습니다. ^^
  • Ego君 2007/08/04 21:36 # 답글

    저랑 접근방식이 다른듯 왠간한 것들은 아직도 EUC-KR를 쓰니까 별수 없이 EUC-KR를 써야합니다.ㅠㅠ
  • 정태영 2007/12/10 13:48 # 삭제 답글

    제일 확실한 것은 메뉴얼을 참조하시는 것이겠죠. ;) default-character-set 은 [mysqld] 나 [client] 항목이 아니라 [mysql] 에 들어가야하는 것 같군요.

    http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

    관련해서 default-character-set-result / client 등이 어떤 것들을 얘기하는지 써놨던 글을 링크하고 갑니다.

    http://b.mytears.org/2006/08/362
  • 2009/02/27 13:28 # 삭제 답글 비공개

    비공개 덧글입니다.
댓글 입력 영역