我在PHP(5.3)中有一个UTF8_encoded数组,但似乎无法以正常方式操作结果。
当在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"}
我花了几个小时尝试不同的事情,但现在完全陷入困境!任何帮助将不胜感激。
感谢。
答案 0 :(得分:2)
您的文字是UTF-16BE。使用iconv将其首先转换为UTF-8。
答案 1 :(得分:0)
return array( 'name' => utf8_decode($prestore[0]),
'online_players' => utf8_decode($prestore[1]),
'maximum_players' => utf8_decode($prestore[2]));
试试这个