데이터베이스에서 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");