php에서 db에 연결하여 json형태로 데이터를 추출하여 

화면에 출력해보았는데


[{"user_id":"23","test2":"\ud558\ud558","test3":"2016-04-12 00:00:00"},{"user_id":"123","test2":"\ud788\ud788","test3":"2016-04-05 00:00:00"},{"user_id":"1234","test2":"\ud638\ud638","test3":"2016-04-18 00:00:00"},{"user_id":"1235","test2":"\ud06c\ud06c","test3":"2016-04-24 00:00:00"}]


이런식으로 한글부분에 \u 문자가 붙고 뒤에도 이상하게 나오는것을 확인하였다.


검색해보니

\u 는 유니코드 구분자라고 한다


받는쪽에서 디코드를 제대로 해주면 문제없이 한글데이터를 사용할 수 있다고 한다


잘못된 것이 아니니 그대로 진행하면 된다.


//////////////////////////////////////////////////////

4/27일 수정 


아무래도 저 유니코드 부분을 바꿔야 될 것 같아서 찾아본 결과

버전별로 많은 바꾸는 방법이 있었다.


함수를 이용해서 euc-kr을 utf-8로 일일이 바꾸는 방법,

유니코드를 한글로 보여주는 함수 등과 같은

여러가지 방법을 했는데 잘되지않았다


내가 아래 방식으로 디비연결을 하고 데이터를 가져와 json_encode를 이용해

json 오브젝트를 만들고있었는데


<?php 

header("Content-Type:text/html;charset=utf-8");

header("Content-Type:application/json");

    include ('./db_info.php');



$connect = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

mysqli_query($connect, "SET NAMES 'utf8'");

if(!$connect){

echo "Error: Unable to connect to MySQL." . PHP_EOL;

echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;

echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;

exit();

}

mysqli_set_charset($connect, "utf8");

//mysqli_query($connect, "SET NAMES utf8");


if ($result = mysqli_query($connect,"SELECT * FROM TEST2")){

$o = array();

while ($row = mysqli_fetch_object($result)) {


$t = new stdClass();

$t->user_id = $row->user_id;

$t->test2 = $row->test2;

$t->test3 = $row->test3;

$o[] = $t;

unset($t);

}

} else {

$o = array( 0 => 'empty');

}


$encode = json_encode($o);

echo $encode;

mysqli_close($connect);

           

?>



하여 encode를 출력하면 계속 한글부분이 유니코드로 

[{"user_id":"1","test2":"\ud558\ud558\ud558","test3":"2016-03-28"},{"user_id":"2","test2":"\ud638\ud638\ud638","test3":"2016-04-05"},{"user_id":"3","test2":"\ud788\ud788\ud788","test3":"2016-04-11"},{"user_id":"4","test2":"\ud14c\uc2b7\ud750\uc785\ub2c8\ub2e4","test3":null}]

이런식으로 나오는데 여러가지 해결방법을 시도해 보았지만 되지않았다.

///////////////////////////////////

그런데


echo json_encode($o, JSON_UNESCAPED_UNICODE)

위방법으로 하니

[{"user_id":"1","test2":"�섑븯��","test3":"2016-03-28"},{"user_id":"2","test2":"�명샇��","test3":"2016-04-05"},{"user_id":"3","test2":"�덊엳��","test3":"2016-04-11"},{"user_id":"4","test2":"�뚯듂�먯엯�덈떎","test3":null}]

이런식으로 나와 더 미궁에 빠졌는데


알고보니

header("Content-Type:application/json");   

json 헤더 선언부분, 이부분이 뭔가 이상한거 같아 지워서 출력해보니 


[{"user_id":"1","test2":"하하하","test3":"2016-03-28"},{"user_id":"2","test2":"호호호","test3":"2016-04-05"},{"user_id":"3","test2":"히히히","test3":"2016-04-11"},{"user_id":"4","test2":"테슷흐입니다","test3":null}]


이런식으로 제대로 나오기 시작했다.

해결을 하기는 했지만 원인은 아직 잘 모르겠다.

+ Recent posts