我指的是这个问题here on stackoverflow,我有同样的问题,除了我使用postgre数据库并且似乎无法使这个工作。
这是我的php函数,它正在查询数据库:
public function getCashData($id, $date)
{
if ($this->openConnection()){
$query = "SELECT * FROM cash_register (". $id .", '". $date ."');";
$result = pg_query($query);
if (!$result){
return false;
}
return pg_fetch_all($result);
}
}
我这样称呼这个函数:
$cashReport = getCashReport($id, $date);
$cashReport = array_map('utf8_encode' , $casaReport); //**note: please read below
echo json_encode($casaReport);
**当我只返回一行结果(而不是现在全部都是这样)时,这非常有效,但现在当我返回一个行数组时,这个array_map函数(我在上面提到的链接中找到)没有工作,因为它需要一个数组而不是一个数组数组。
你能帮助我解决这个问题吗?
答案 0 :(得分:1)
试试这个:
function encode_items(&$item, $key)
{
$item = utf8_encode($item);
}
array_walk_recursive($cashReport, 'encode_items');
答案 1 :(得分:0)
也可以“告诉”postgre服务器发送utf-8编码的数据 见http://docs.php.net/pg_set_client_encoding
答案 2 :(得分:0)
我最终做到了这一点,因为我被迫“尽快”修复它:
$json = json_encode($cashReport);
$jsonEscapedNulls = str_replace('null', '""', $json);
echo $jsonEscapedNulls;
现在,我明白“修复”不是解决方案,但我在给定的时间段内没有其他选择:(。所以如果有人给出的答案不会作为解决方案,但作为一般解决方案,我会要感激不尽。在此之前,这将是必须的。