小编典典

php json_encode()显示null而不是文字

json

我正在从数据库中读取希伯来语中的一些文本,并正在尝试这样json_encode做。如果print_r我得到的结果是:

Array
(
    [0] => Array
        (
            [value] => 88
            [text] => כיתה א'
            [parent_id] => 1
            [level] => 1
        )

    [1] => Array
        (
            [value] => 89
            [text] => כיתה ב'
            [parent_id] => 1
            [level] => 1
        )

    [2] => Array
        (
            [value] => 91
            [text] => כיתה ג'
            [parent_id] => 1
            [level] => 1
        )

)

而json_encode显示:

[{"value":"88","text":null,"parent_id":"1","level":"1"},{"value":"89","text":null,"parent_id":"1","level":"1"},{"value":"91","text":null,"parent_id":"1","level":"1"}]

我相信这是因为我在数据库中的文本包含一个(’)标记。尝试了各种反斜杠或real_escape_string组合,都无济于事。


阅读 486

收藏
2020-07-27

共1个答案

小编典典

json_encode 期望将数据中的字符串编码为UTF-8。

如果尚未将它们转换为UTF-8:

$results = array_map(function($r) {
  $r['text'] = utf8_encode($r['text']);
  return $r;
}, $results);
echo json_encode($results);
2020-07-27