개발 Q&A

제목 mysql 이랑 연동하는데 한글이 깨져서 나옵니다.
글쓴이 jjoships 작성시각 2013/08/07 15:23:50
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 15662   RSS
mysql에 직접 콘솔로 접속해서 한글 데이터를 넣고 select를 해보거나, 웹페이지에서 한글 데이터를 DB에 인서트 한 이후 select로 확인해도 한글이 전부 ????로 나옵니다.

여러군데 돌아다니면서 my.ini 파일을 고쳐보기도 하고 별짓을 다했는데.. 아무리 해도 한글이 전부 ????로 뜨네요..





아래는 제 database.php 입니다

$active_group = 'default';
$active_record = TRUE;
 
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'apmsetup';
$db['default']['database'] = 'test';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;





====================my.ini===================

# The MySQL server
[mysqld]
default-character-set = utf8
port = 3306
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
skip-innodb
 
 
 
# The following options will be passed to all MySQL clients
[client]
default-character-set = utf8
port = 3306
 
 
[mysqldump]
default-character-set = utf8
quick
max_allowed_packet = 16M
 
 
 
[mysql]
default-character-set = utf8
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
 다음글 레이아웃 잡기 질문 입니다. (3)
 이전글 php에서 excel을 이용하실때 어떤 library를... (16)

댓글

전상민 / 2013/08/07 15:59:32 / 추천 0
터미널 접속 프로그램의 접속 계정 인코딩 설정 확인해 보시구요.
계정 설정이 UTF-8 로 돼있으면 mysql client character set 문제일 것 같기도 하네요.
아래 명령어로 "Client characterset" 이 설정값을 확인해보세요.
mysql> \s


위 결과가 UTF8 이 아닐경우 처리 방법은 다음과 같습니다.

1. my.cnf 수정 권한이 있을 경우
아래 설정은 클라이언트 인코딩은 무시하고 서버 인코딩을 적용하는 설정입니다.
[mysqld]
character-set-client-handshake = FALSE

2. my.cnf 수정 권한이 없을 경우
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;

- 기존에 생성된 DB의 인코딩 바꾸기
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;
jjoships / 2013/08/07 17:01:12 / 추천 0
 음.. 말씀하신대로 해봤고 안되기에, utf-8을 euckr로 해봤는데도 안되서 말입니다...

올려주신 명령어를 입력하고 ' \s ' 명령어를 쳐봤는데

Client Characterset 이 utf8이 아니라 latin1 로 되있네요.. 분명히 명령어 다 입력했는뎅... 흐음..
jjoships / 2013/08/08 15:56:50 / 추천 0
 아 되네요... 말씀하신대로 명령어 입력하고, 한글 입력이 안돼는 테이블을 드롭하고 다시 만드니까 됩니다.

감사합니다 ^^