티스토리 뷰

외주 받아 일하고 있는 곳 레거시 시스템이 PHP. 어느날 이유도 모르게 한글이 물음표로 떠서 검색했는데 생각보다 해결하는데 애먹어서 이력을 기록.


해결



$conn = mysqli_connect($host,$user,$pwd,$db);

mysqli_set_charset($conn, "utf8"); // 추가



이력



멀쩡하던 것이 왜 문제가 생겼나, 누군가 인코딩 항목을 바꿨는지 싶어, phpMyAdmin 들어가서 이것저것 다 만져보고 찾아도 봤는데 문제가 있을 법한 항목을 찾지 못함. db는 잘못이 없다는 생각이 듦.

php <--> db 간 문제 일것으로 생각을 바꾸고 아래의 쿼리로 인코딩 상태를 알아보니, server 항목이 latin1

SHOW VARIABLES LIKE "%character%";

SHOW VARIABLES LIKE "%collation%";


SET SESSION character_set_server=utf8; 쿼리를 날려보니, 세션이 유지되는 동안에는 utf8로 유지되길래 기존에 있던 mysqli_query("set names utf8"); 에 위의 쿼리를 넣어 페이지를 다시 로딩. 

mysqli_query("set names utf8");

mysqli_query("SET SESSION character_set_server=utf8"); // 추가


변화없음.

이후 해결란의 코드 한줄을 추가해 해결됨.



환경


Qnap 4.1.3

MariaDB 5.5.44

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함