iOS <-> 서버 데이터 검색해서 받기
본문
사용하고 있는 서버는 php7.0, mysql 입니다.
ios에서 post로 검색어를 보내서 해당되는 json으로 데이터를 받아오려고 하는데요.
1. url request로 받아오는 건 되는데 encoding후 값을 찍어보면 한글이 깨집니다.
2. NSDictionary로 받는것 까지는 되는데 값추출시 공백으로 찍힙니다.
3. Alamofire나 Swiftyjson 같은 라이브러리를 사용할 경우 post 값을 서버에 둔 php가 확인하지 못하더군요.
서버단 php에서 post값은 아래처럼 받아서 검색키로 사용하고요.
이부분을 어떻게 변형해야 Alamofire나 Swiftyjson에서 post값을 보냈을때 작동할까요?
$postvalue=isset($_POST['postvalue']) ? $_POST['postvalue'] : '';
4.데이터 대입은 아래와 같습니다.
while($row=mysqli_fetch_array($result)){
array_push($data,
array('mb_addr1'=>$row["mb_addr1"],
'mb_name'=>$row["mb_name"]
...
));
}
이렇게 대입하면 ios의 json 규격에 맞지 않게 되는 건가요?
5. ios에 값을 보낼땐 아래와 같이 보내고 있습니다.
header('Content-Type: application/json; charset=utf8');
$json = json_encode(array("serverdata"=>$data), JSON_UNESCAPED_UNICODE);
echo $json;
여기에 어떤 문제가 있어서 한글이 깨질까요? json-encoding을 하지않고 print_r로 보내면 String(describing:시 한글과 url이 제대로 나옵니다. 이것을 NSDictionary로 받으려 하면 오류가 납니다.
답변 1
Json 데이터 타입도 만들때 여러방식이 있더라구요
잘은 모르겠지만 저라면 자바스크립트로도 json데이터를 꾸며서 보내보기도 할것같구..
mysqli에서 데이터 불러올때 utf-8로 케릭셋설정해서 불러오기도 해볼것같고 그렇네요..
언제였더라 너무 오래되긴했는데 이게 utf-8로 불러오는걸 선언을 안해주면 한글이 깨져서
나오곤했어요.
그리고 어제 php7에서 작업을하는데 세상에.. 인코딩 euc-kr 페이지선언 euc-kr인데도 불구하고
php5.5에서 잘 돌아가던건데도 불구하고!
한글이 엉망진창으로 다 깨져서 나왔엇네요. 현답이 아닐수도 있겠지만
저라면 꼭 php7이 필요한 상황아니라면 버전 다운그레이드 해서도 진행해보시는것도 고려해보겠습니다
정확한 답변은 아니겠지만 이건 한글데이터 가공에대한 과정이라
제가 겪어보고 해결했었던 상황을 다시 떠올려 말씀드립니다.