PHP, MySQL 간 UTF-8 한글 깨짐 현상 해결
페이지 정보
작성자 서방님 댓글 0건 조회 243회 작성일 16-02-04 17:35본문
MySQL 5.3 기준입니다. 5.5 이상에서는 테스트 되지 않았습니다. 5.5에서 두번째 방법은 확실히 안되네요.
간혹 웹 서버, 혹은 DB 서버 구축시 PHP랑 MySQL의 인코딩 문제 때문에 귀찮을 때가 있다. 분명 둘 다 UTF-8 (유니코드)로 설정을 잘한 것 같은데, 한글 인코딩 문제가 발생하기 때문이다. 예를 들어 분명 웹에서는 잘 나타나는데 실제 DB를 확인해보면 깨진 한글이 입력되어 있거나 그렇다.
이를 해결하기 위해 2가지 정도의 방법이 있다.
이 방법은 DB Connection을 하는 각 페이지 마다 강제 인코딩 설정을 해주는 방법이다. PHP 파일에서 DB 연결하고 다음 쿼리를 날려주면 된다.
set names utf8;
위 방법으로 안된다면 추가로 다음 쿼리도 날려줘보자.
set session character_set_connection=utf8;
set session character_set_results=utf8;
set session character_set_client=utf8;
이 정도 하면 대부분의 PHP, MySQL간 한글 인코딩 문제가 해결된다.
그런데 DB 연결 때 마다 위 쿼리를 전송하는 것은 사실 DB를 관리하는 입장에서는 좀 부담이 있다. /etc/my.cnf 에 다음 구문을 추가 한뒤 mysqld 를 재시작 한다.
[mysqld]
collation-server=utf8_unicode_ci
default-character-set=utf8
character-set-server=utf8
init_connect=set collation_connection=utf8_unicode_ci
init_connect=set names utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
PHP, MySQL 한글 사용시 이정도는 초기에 설정해 놓는 편이 좋을 듯하다.
댓글목록
등록된 댓글이 없습니다.