2014-02-14 1 views
1

utf-8 기호를 포함하는 json 문자열을 PHP 배열로 변환하려고합니다.utf-8 기호를 포함하는 json 문자열을 PHP 배열로 변환하십시오.

$jsonString = '{"loginid" : "90", "username" : "\U0437\U0430\U043c\U043a\U0435"}'; 

$array = json_decode($jsonString,true); 

불행히도 을 반환합니다.

내 실수는 어디에서 왔습니까?

+0

합니다. http://jsonlint.com 그게 어디서 오는거야? – deceze

+0

유효한 PHP도 아닙니다. '$ jsonString'과'$ array', 아마도? –

+0

@deceze 당신은 완전히 맞습니다 ... 누락 된 것을 눈치 채지 못했습니다 \ – Zounadire

답변

1

사용 \u 대신 \U. 이 시도 : 유효한 JSON 아니다

$jsonString = '{"loginid" : "90", "username" : "\u0437\u0430\u043c\u043a\u0435"}'; 

$array = json_decode($jsonString,true); 
+0

예 내가 일종의 입력을 검토하지 않고 게시 할 급하게. 그것을 고쳤다. 당신은 또한 당신의 제안에 맞습니다. 소문자 여야합니다. 첫 번째 대답에서 주석을 달았으므로, 웹 서비스에서 이것을 얻는 것은 올바른 json을 제공하지 못한다. 내 말은, – Zounadire

+0

. '$ jsonString = preg_replace ('/ \\\ U /', '\ u', $ jsonString); ' – bprayudha

+0

네,이 방법을 사용하십시오. 곧 대답하게되었습니다. 그것은 해킹의 이상입니다. 웹 서비스 측면에서이를 더 잘 수정하십시오. 도움을 청하십시오. – Zounadire

1

슬래시를 이스케이프 처리하십시오.

<?php 

$jsonString = '{"loginid" : "90", "username" : "\\\U0430"}'; 

$array = json_decode($jsonString, true); 

print "<PRE><FONT COLOR=ORANGE>"; print_r($array); print "</FONT></PRE>"; 
+0

명백한 종류입니다. 그래서 이것을 제공하는 WebService는 버그가 있습니다. TY – Zounadire

+0

bprayudha가 소문자 u로 맞았습니다. 어쨌든 당신의 도움을 위해 thx : – Zounadire

관련 문제