■ 백엔드 ■/PHP
json 한글이 ?로 깨질때
serpiko
2018. 6. 4. 11:31
json 한글이 ?로 깨질때
php에서 json값을 출력할때 header에 charset utf-8 로 지정해줘도 한글이 ??? 로
표시될때가 있다.
header("Content-type: application/json; charset=utf-8"); echo json_encode($res);
원인 : json에서 값 받아올때 DB에서 캐릭터셋이 지정되어있지 않은경우이다.
DB connect 할때 charset 을 지정하는 옵션에서 utf8 로 지정해 주어야 한다.
mysqli
$conn = new mysqli("localhost", "root", "", "test"); if ( $conn->connect_errno ){ die("Could not connect to database!"); } /* change character set to utf8 */ if (!$conn->set_charset("utf8")) { printf("Error loading character set utf8: %s\n", $conn->error); exit(); }
PDO
<?php $dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
mysql_connect
<?php $link = mysql_connect('localhost', 'user', 'password'); mysql_set_charset('utf8',$link); $db_selected = mysql_select_db('emp_feedback', $link);