티스토리 뷰

$data['nick'] = '비용러브';
$data['homepage'] = 'http://tkdev.tistory.com/';
$data['memo'] = '비용러브 입니다.';

 

위와 같은 값을 JSON 문자열로 만들면 아래와 같습니다.


{"nick":"\ube44\u63c","homepage":"http:\/\/tkdev.tistory.com\/","memo":"\uc785\ub2c8\ub2e4."}


한글이 '비용러브'→'\ube44\ud63c', '입니다'→'\uc785\ub2c8\ub2e4'처럼 바뀌죠.

(이것을 보고 한글이 깨졌다 하는데 잘못된 표현이죠.)


생성할 때 한글이 온전하게 표현될 수 있도록 하는 방법은 생략합니다.

(참고로 PHP 5.4 버전에 json_encode() 함수에 추가된 옵션 사용하면 간편)


이번 글은 위 문자열에서 \uXXXX 부분을 한글화하는 방법만 적습니다.


정규식으로 \u로 시작하는 문자열을 구해 json_decode() 함수를 이용해 변환하는 초 간단 예제입니다.


function han($s) { return reset(json_decode('{"s":"'.$s.'"}')); }


function to_han($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }


$test = '{"nick":"\ube44\ud63c","homepage":"http:\/\/tkdev.tistory.com\/","memo":"\uc785\ub2c8\ub2e4."}';


echo to_han($test);



실행 결과 아래 문자열 출력됩니다.


{"nick":"비용러브","homepage":"http:\/\/tkdev.tistory.com\/","memo":"'비용러브입니다."}



댓글