웹 프로그래밍/PHP

php json_encode 한글(utf8)

삽질중 2016. 7. 7. 08:59

출처 : http://intro0517.tistory.com/118


php 기본 내장 json_encode를 사용하면 한글부분에서 문제가 발생해서 아래와 같이 함수를 구현해서 사용하시면 됩니다.


function json_encode2($data) {

    switch (gettype($data)) {

        case 'boolean':

            return $data?'true':'false';

        case 'integer':

        case 'double':

            return $data;

        case 'string':

            return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"';

        case 'array':

            $rel = false; // relative array?

            $key = array_keys($data);

            foreach ($key as $v) {

                if (!is_int($v)) {

                    $rel = true;

                    break;

                }

            }


            $arr = array();

            foreach ($data as $k=>$v) {

                $arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v);

            }


            return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']';

        default:

            return '""';

    }

}