데이터베이스에서 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
참고로 구형 코드는 아래와 같다.
@mysql_query("set names UTF8");
seo0noh 에 응답 남기기응답 취소