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
댓글 없음:
댓글 쓰기