2012-04-26 43 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 Varデータの結果のダンプは正しいものの、文字列の長さはすべてオフです。

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です。最初にUTF-8に変換するには、iconvを使用します。

+0

うんをお試しください!どうもありがとうございます。 – RyanManard

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

それだったこの

関連する問題