프로그래밍/Etc

[mysql] mysql 한글 깨짐 현상 ( UTF-8로 인코딩 변경)

kugancity 2014. 8. 24. 21:19
반응형

 

mysql db에서 SQL 질의 결과를 csv로 export해서 엑셀로 열어보자 한글이 깨지는 현상이 발생했다.

사실 이 현상 자체는 csv의 인코딩을 엑셀이 제대로 인식을 못해서 벌어지는 문제로

그 후 메모장으로 열어서 인코딩을 ANSI로 바꾸고 다시 엑셀로 열자 해결되었다.

 

그러나 이 방법을 알기 이전에 이미 mysql 기본 인코딩을

utf-8로 바꾸는 삽질(아니 뭐 딱히 삽질이 아닐지도;)을 했기 때문에 여기 정리해둔다.

 

일단 현재 mysql 기본 인코딩을 확인해보았다.

 

mysql> status
--------------

...


Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8

 

...


 

--------------

 

Server와 DB 인코딩이 기본 Latin1으로 되어있다.

이런 인코딩은 my.cnf 설정파일을 수정하면 된다.

 

my.cnf 위치를 찾기 위해서 다음과 같은 명령어를 입력했다.

 

# mysql --verbose --help | grep -A 1 'Default options'        Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

 

/etc/my.cnf  파일을 열어 utf8 인코딩 설정을 아래와 같이 추가 하였다.

 

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character-set-server=utf8
collation-server=utf8_general_ci
init_connect = set collation_connection = utf8_general_ci
init_connect = set names utf8

 

[mysql]
default-character-set=utf8

 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8

 

[client]
default-character-set=utf8

 

[mysqldump]
default-character-set=utf8

 

 

그리고 mysqld를 재시작.

 

#service mysqld restart
mysqld 를 정지 중:                                         [  OK  ]
mysqld (을)를 시작 중:                                    [  OK  ]

 

 

이제 전체 인코딩이 utf8로 변경된 것을 확인할 수 있다.

 


--------------
mysql  Ver 14.14 Distrib 5.5.38, for Linux (x86_64) using readline 5.1

...

 

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

 

...

--------------
 

 

 


728x90
반응형