urldecode在JSON不起作用

问题描述:

require_once('db.php'); 

$sql = "SELECT * FROM tbl"; 

$rs = mysql_query($sql); 

$rows = array(); 

while($r = mysql_fetch_assoc($rs)) { 
    $rows['Record'][] = $r; 
} 

print json_encode($rows); 

mysql_close($conn); 

//它完美的作品上面urldecode在JSON不起作用

while($r = mysql_fetch_assoc($rs)) { 

    $r = utf8_decode(urldecode($r)); 

    $rows['Record'][] = $r; 
} 

//它没有以上工作,可能是$ r是一个对象 我怎样才能使它工作?

+0

是试图从JSON解析数据。你想要什么类型的答案任何语法来显示我 –

+0

你对这个'$ r = utf8_decode(urldecode($ r))有什么期望? –

问题是,mysql_fetch_assoc返回一个数组,并且您想将它传递给urldecode,它将等待字符串作为参数。

要达到您想要的效果,您应该致电urldecode查看返回的$r中的所有列。

你可以像这样做,例如:

$r = array_map(function($col){ 
    return utf8_decode(urldecode($col)); 
}, $r); 

http://php.net/manual/en/function.mysql-fetch-assoc.php

http://php.net/manual/en/function.urldecode.php

+0

这样返回 {“记录”:[{“ID”:“1”,“name”:“John Smith”,“email”:“[email protected]”,“tel”:“12345678” ,“total”:“0”,“edm”:“Y”,“receipt”:“”,“timestamp”:“2016-07-07 12:50:52”},{“ID”:“2” ,“名称”:“Anna Chan ????”,“email”:“[email protected]”,“tel”:“87654321”,“total”:“200”,“edm”:“N”, “receipt”:“????”,“timestamp”:“2016-07-07 12:52:15”}]} ?????是中文字符 如果我从utf8_decode(urldecode($ col))中拿走utf8_decode; 它返回\ u66f4 \ u65b5 \ u65e5 \ u671f 我该如何解决它? – lee