2015/07/05

PHP Ajax에서 한글 깨짐 // json, 유니코드(Unicode), 한글 인코딩, json_encode, json_decode

1. PHP와 jQuery Ajax를 결합한 페이지 구현 중 한글이 깨지는 현상 발견!

평소에 Java에서 한글이 깨질 때와 다른 형태로 한글이 깨지는 현상이 나타나서 '이건 뭔가~' 하고 헤매기 시작! ㅋ;;

예) 작업성공(원문) -> \uc791\uc5c5\uc131\uacf5(깨져서 나오는 문자)


2. 이것이 말로만 듣던 유니코드(Unicode)

여러 검색 결과를 종합해보니,

json_encode() 에 한글이 들어있으면 json 결과가 유니코드로 바뀜

\u로 시작되는 저게 바로 '유니코드'였던 것임


3. PHP 페이지 사이에서는 json_encode() -> json_decode() 를 이용하면 되지만, Ajax에서는 어.떻.게.하.지~

저렇게 유니코드로 바뀐 한글 메세지라도

받는 페이지(PHP)에서 json_decode()를 하면 한글이 정상적으로 디코딩 되서 나오지만,

json 을 Ajax 로 받아서 JavaScript로 곧바로 처리해야 되는 상황에서는 PHP의 json_decode()는 무용지물. -.-;;;;


4. 해결방법은 없는 것인가?

PHP 버전에 따라서 json_encode()의 옵션으로 뭔가를 지정해서 한글이 유니코드로 인코딩 되지 않도록 할 수도 있는 것 같던데 5.2.xx 버전에는 그런 거 없음. -.-;

검색 삽질을 한참동안 한 후에... (이거는 검색 키워드를 찾기도 힘들었음 -.-;;)

array_to_json() 으로 간단히 해결.


- json_encode 결과값에 대한 질문 ( http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=332685 )


- json_encode ( http://kr.php.net/manual/en/function.json-encode.php )
'array_to_json' 검색


array_to_json() 의 위엄


* andyrusterholz 횽님 감사욤


5. 실패했던 시도들

- array_map()에다가 htmlentities, utf-8 어쩌고 해서 넣고 html_entity_decode 하는 거는 도움 안 됨.

- urldecode(), iconv() 도 여기서는 해당 안됨.

- JavaScript에서 unescape() 하는 것도 관계 없는 사항이었음.



댓글 없음:

댓글 쓰기