2

PHP (5.3) に UTF8_encoded 配列がありますが、通常の方法で結果を操作できないようです。

PHP でデータを echo すると、結果は正しく表示されますが、変数をテストすると (たとえば、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"}

さまざまなことを試すのに数時間費やしましたが、今は完全に立ち往生しています! どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

2

テキストは UTF-16BE です。まず、iconv を使用して UTF-8 に変換します。

于 2012-04-26T20:36:03.113 に答える
0
return array( 'name' => utf8_decode($prestore[0]),
'online_players' => utf8_decode($prestore[1]),
'maximum_players' => utf8_decode($prestore[2]));

これを試して

于 2012-04-26T20:42:43.487 に答える