Knowledge Map
json_encode에서 이스케이프 문자열 본문
무료호스팅에서 php5.6을 사용가능하게 해놨길래 별생각없이 옆에 생활코딩 php 정리 글 하나 띄워놓고 시작을 해봤다. 원래의 목표는 간단한 api서버 만들어놓고 댓글 CRUD정도만 하려고 했다. 그런데 문제가 생겼다. 서버 설정이 euc-kr로 변경불가하다는 점이었다. 인코딩 문제가 가장 짜증났었는데 이번에도 그랬다.
먼저 php에서 json변환을 하기 위해서는 utf-8로만 가능하다. euc-kr로는 불가능하다. json_encode 자체가 이미 그렇게 만들어져 있다.그래서 iconv를 이용해서 만들었는데 자꾸 이상하게 문자가 출력이 되었다.
\uac00\uac00\uac00\uac00\uac00 이런식으로..
무엇때문일까 한참을 찾았다. iconv도 써보고, mb_convert_encoding, html_entity_decode도 써보고 mysql의 설정도 변경해보고 php파일의 인코딩도 변경해보고 해봤는데 결국 문제는 그것들이 아니었다. json_encode에서 이스케이프 를 추가해서 그런 것이었다. 그러니 그것을 제외하는 식으로 대응하면 쉽게 해결이 된다.
1. iconv를 이용해서 키와 값들의 인코딩을 변경해준다.
2. json_encode($target, JSON_UNESCAPED_UNICODE); // JSON_UNESCAPED_UNICODE를 붙여주면 된다.
이러면 정상적으로 진행이 된다. 물론 그냥 냅두고 js단에서 unescape를 해버려도 된다. 그게 더 나을려나?
'WEB > PHP' 카테고리의 다른 글
한글인코딩, php -> mysql 입력 (0) | 2016.10.26 |
---|---|
php 인코딩 변경, 메모장 쓰지 말것,  (1) | 2016.07.01 |
세션이란? (0) | 2016.06.13 |
php에서 지원하는 mysql 함수 (0) | 2016.06.02 |
php 문자 -> 날짜 변경, number -> number format, 삼항연산자 (0) | 2016.06.02 |
Comments