2012-04-26 14 views
2

PHP (5.3)에서 UTF8_encoded 배열을 가지고 있지만 정상적인 방법으로 결과를 조작하지 못하는 것 같습니다.PHP json으로 인코딩 된 UTF8 문자열을 일반 문자로 변환

PHP에서 데이터를 에코 할 때 결과가 올바르게 표시되지만 변수를 테스트 할 때 (예 : is_numeric을 사용하여) 결과가 실패합니다.

PHP에서이 배열을 변환하여 데이터를 정상적으로 사용할 수 있도록하려면 어떻게해야합니까?

getInfo($host,$port){ 
.... 
$prestore = mb_split("\xc2\xA7", utf8_encode($response)); 

return array('name' => $prestore[0], 
'online_players' => $prestore[1], 
'maximum_players' => $prestore[2]); 
} 

$data = getInfo($host,$port); 
var_dump($data); 

$data2 = json_encode(getInfo($host,$port)); 
echo $data2; 

PHP 데이터 덤프 데이터 결과는 정확하지만 문자열 길이는 모두 꺼져 있습니다.

Array(3) { 
    ["name"]=> 
    string(23) "MC-Outbreak" 
    ["online_players"]=> 
    string(5) "13" 
    ["maximum_players"]=> 
    string(4) "70" 
} 

PHP json_encode 결과는 다음과 같습니다.

{"name":"\u0000M\u0000C\u0000-\u0000O\u0000u\u0000t\u0000b\u0000r\u0000e\u0000a\u0000k\u0000","online_players":"\u00001\u00003\u0000","maximum_players":"\u00007\u00000"} 

몇 시간을 들여서 여러 가지를 시도했지만 완전히 멈췄습니다. 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

답변

2

텍스트는 UTF-16BE입니다. iconv를 사용하여 먼저 UTF-8로 변환하십시오.

+0

그래보세요! 정말 고맙습니다. – RyanManard

0
return array('name' => utf8_decode($prestore[0]), 
'online_players' => utf8_decode($prestore[1]), 
'maximum_players' => utf8_decode($prestore[2])); 

그것은이었다이

관련 문제