DB 인코딩 변경 


안녕하세요 고코더 입니다.

PHP를 처음시작 했을때 많이 접하는 상황입니다.
정상적으로 DB연결을 하고 리스트로 뿌려주는데

??? ?? 이런 형태로 글자가 깨져있습니다.



문서 인코딩도 정상적이고
DB입력값도 정상인데 참이상합니다.

해당 오류는 아래 코드로 인코딩만 변경해서 PHP에 심어주면 해결됩니다.
1
2
3
4
5
6
7
<?php
$this->conn = mysqli_connect($this->host,$this->user,$this->password,$this->database,$this->port);
 
mysqli_query($this->conn, "set session character_set_client=utf8");
mysqli_query($this->conn, "set session character_set_connection=utf8");
mysqli_query($this->conn, "set session character_set_results=utf8");
?>
cs

보통은 별다른 설정없이 DB에서 가져오면
라틴어(?)로 되어 있습니다.

이를 euc-kr 이나 utf8로 자신의 인코딩으로 가져오시면 됩니다. 

▼ 이제 정상적으로 보이네요





마무리

영어권 국가였으면..


댓글을 달아 주세요



 database , table , column의 character set 알아보기 


안녕하세요. 고코더 입니다.

mysql 에 인코딩 캐릭터셋을 알아보는 방법을
알려드리려고 합니다.

DB입력시 인코딩에 따라 변환을 해서 입력해야 하는데
캐릭터셋이 모를 경우 

아래 쿼리를 돌려보시면 확인이 가능합니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT DEFAULT_CHARACTER_SET_NAME        
FROM INFORMATION_SCHEMA.SCHEMATA 
WHERE SCHEMA_NAME = 'DB명';
 
SELECT TABLE_COLLATION 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'DB명';
 
SELECT COLUMN_NAME, CHARACTER_SET_NAME
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = "DB명"
AND TABLE_NAME = "TABLE명"
 
cs


해당 결과 값을 본인의 DB에 실행해보시면
아래처럼 결과 값이 나옵니다.

▼ 데이터베이스 인코딩


▼ 테이블 인코딩



▼ 컬럼 인코딩




마무리

이젠 거의 UTF-8 이겠죠?


댓글을 달아 주세요