2012-04-26 134 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。首先使用iconv将其转换为UTF-8。

+0

没错,就是这样!非常感谢。 – RyanManard 2012-04-26 22:26:06

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

试试这个

相关问题