이 블로그 검색

2012년 10월 12일 금요일

mysqli에서 인코딩 설정

데이터베이스에서 PHP가 자료를 가져올 때 이해하는 인코딩을 설정해줘야 하는 듯하다.
DB에 UTF8로 데이터가 저장돼있다고 가정하자.
DB에 접속한 뒤 PHP에서 인코딩 설정을 해 주지 않으면,
PHP는 DB에 입력된 자료가 latin1이라고 이해한다.(PHP Version 5.2.6 이다.)
따라서 PHP한테 말해줘야 한다. “네가 가져온 데이터는 UTF8로 돼있는 거야!” 하고 말이다.
코드는 다음과 같다.
$db = new mysqli('localhost','DB아이디','DB비밀번호','DB이름');
if(mysqli_connect_errno()){
echo "error 났음!";
//여기엔 당연히 에러 났을 때 처리를 적어 줘야 할 것이다. 지금은 생략한다.
}
//여기부터가 인코딩 세팅 부분이다. 코드는 PHP홈페이지에서 가져와 사용했다.
//주의할 점은 utf-8이 아니라 utf8로 적어야 한다는 점이다.(euc-kr도 euckr로 적어야 합니다.)
if ( !$db->set_charset("utf8") ) {
printf("utf8 문자 세트를 가져오다가 에러가 났습니다 : %s\n", $db->error);
} else {
printf("현재 문자 세트 : %s\n", $db->character_set_name());
//위 코드를 분석해 보면 알겠지만, character_set_name()은 PHP가 DB 인코딩을 뭘로 이해하고 있는지 가져오는 메서드다.
}
이렇게 하면 깔끔하게 가져올 수 있다.

참고 : http://www.php.net/manual/kr/mysqli.set-charset.php
출처 : 녹풍님 블로그 http://mytory.co.kr/archives/5

댓글 없음:

댓글 쓰기