본문 바로가기
Lecture/Mysql

[Mysql] insert시 한글깨짐 해결

by cusmaker 2014. 8. 5.
반응형

Mysql 5.6 버전기준


현상 

1. 한글이나 한자를 입력하면 테이블상에서 데이터가 깨져보인다.

2. WAS LOG에서는 정상적으로 문자가 출력되지만, DB에 들어간 데이터를 확인하면 ??와 같이 깨져서 들어간다.


이유

1. Mysql 기본 설치시 캐릭터셋은 Default로 UTF8로 지정되어 있지 않다.
2. 캐릭터셋을 Workbench에서 강제로 바꿔도 바뀌지 않는다.


해결 

1. Mysql의 기본 CharacterSet을 utf8로 변경

>/etc/my.cnf 를 아래 내용을 추가하여 charset 을 변경함 

> 이후 생성되는 테이블에 적용됨?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[mysql]
default-character-set = utf8
  
[client]
default-character-set = utf8
  
[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
  
[mysqldump]
default-character-set = utf8

2. 각 테이블의 캐릭터셋을 변경하는 방법 

>ALTER TABLE table_name convert to charset utf8;


새로운 이슈

1. 이럴경우 직접 쿼리를 날리면 데이터는 정상적으로 들어가지만 WAS를 통해서 들어가는데이터가 깨지는 현상이 생김

> Mysql 접속정보를 설정하는 부분에 파라미터를 추가해준다(JDBC기준)

> p:jdbcUrl="jdbc:mysql://localhost/dbname?useUnicode=yes&characterEncoding=UTF-8&autoReconnect=true"