일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- javascript
- not working
- curl
- 안드로이드 gcm
- 우분투
- 안드로이드
- mysql
- chart.js
- soundpool
- 안드로이드 푸시
- WebView
- FCM
- html5
- dovecot
- php 시큐어코딩
- PHP
- UML
- roundcube
- C# IO
- 안드로이드 푸쉬
- xe
- Android
- 자바스크립트
- Mail Server
- php 취약점
- 설치
- 폼메일
- 자동 생성
- android 효과음
- C#
- Today
- Total
그러냐
php array to json 한글깨짐 완전해결 본문
1. 개요
PHP 에서 Array 형 데이터를 JSON 포멧으로 출력하고자 하는 경우 json_encode 함수를 호출함으로써 간단하게 데이터 변환이 가능하다.
단, 해당 함수는 UTF-8 형태의 String 값만을 사용할 수 있기 때문에 iconv 를 사용하여 UTF-8 인코딩을 하여 사용해야만 한다.
그런데 여기서 문제가 발생하는데, 한글 데이터를 사용할 경우 json_encode 함수가 한글을 유니코드 형태로 자동으로 변환해서 출력하게끔 되어 있다.
2. 해결 방안
PHP 5.4 버전 이상을 사용할 경우, 다음과 같이 상수 변수 값을 옵션으로 줌으로써 간단하게 해결이 가능하다.
1 | json_encode($arrJson, JSON_UNESCAPED_UNICODE); |
그러나, 하위 버전 PHP를 사용하는 경우 json_encode 함수가 옵션 값을 받지 않기 때문에 해당 방법을 사용 할 수 없다.
따라서, 다음의 함수를 추가하여 해결하도록 한다.
json_encode($arrJson, JSON_UNESCAPED_UNICODE);
그러나, 하위 버전 PHP를 사용하는 경우 json_encode 함수가 옵션 값을 받지 않기 때문에 해당 방법을 사용 할 수 없다.
따라서, 다음의 함수를 추가하여 해결하도록 한다.
function han ($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han ($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
to_han (json_encode($arrJson));
출처: http://ittravelkr.tistory.com/30
'php' 카테고리의 다른 글
PHP WebSocket (웹소켓) 라이브러리 Ratchet, ReactPHP, sandstone (0) | 2019.01.03 |
---|---|
filecopy (0) | 2018.12.17 |
php 파일 다운로드시 파일깨짐현상 (0) | 2018.12.05 |
ipTIME NAS 에 설치한 XE, 다올CMS 첨부파일 버튼 무반응 해결 (0) | 2018.07.16 |
[xe개발] 게시판 글 쓰기 처리 순서 과정 (0) | 2018.07.11 |