검색결과 리스트
json_encode에 해당되는 글 1건
- 2016.04.21 PHP5.3에서 json_encode 후 한글 깨짐
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
PHP로 API서버를 구축하는 도중 아래와 같은 문제가 나타났다.
json_encode 시 한글이 깨지는 현상
PHP5.3을 사용하고 있으므로 아래의 해결방법이 다른 버전에서는 다를 수 있다.
클라이언트에서 요청한 결과를 JSON형태로 응답하려고 하기에 아래와 같이 작업을 하였다.
$res['cd'] = 0;
$res['msg'] = 'OK';
$res['data1'] = '확인';
$json = json_encode ( (object) $res );
echo $json;
위의 값을 클라이언트에서 파싱해보면 cd, msg는 정상적이지만 data1의 값은 깨진다.
json_encode를 통해 한글이 깨짐을 알 수 있는데, 필자는 urlencode, urldecode를 통해 이를 해결하였다.
$res['cd'] = 0;
$res['msg'] = 'OK';
$res['data1'] = urlencode ('확인');
$json = json_encode ( (object) $res );
$json = urldecode ($json);
echo $json;
혹시 PHP의 다른 버전들에 대해서도 테스트할 기회가 생긴다면 버전별로 이 포스트에 정리하도록 하겠다.
추가) 2016.04.21
DB에서 가져온 한글데이터 역시 json_encode 후 제대로 표현되지 않았다.
필자는 MSSQL을 이용했지만, 참조한 사이트에서는 MySQL인 경우에도 마찬가지였다.
function han ($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han ($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
// DB로부터 받은 값을 변수에 저장
while($e = mysql_fetch_assoc($result)){
$output[] = $e;
}
$encode = json_encode($output);
print (to_han($encode));
PHP5.3인 경우에 위와 같은 방식으로 해결이 되었다.
'-- PHP' 카테고리의 다른 글
PHP Magic Method (특수메소드) (0) | 2017.05.10 |
---|---|
PHP 결과에 생기는  값 제거 (0) | 2016.05.23 |
php @ (0) | 2015.03.02 |
[CI] CodeIgniter의 특징 및 장점 (0) | 2013.10.17 |
[CI] 폴더설명 (0) | 2013.10.17 |
RECENT COMMENT