使用json_encode将数组转换为json并返回文本

时间:2011-09-06 12:22:37

标签: php json

我从mysql数据库中检索数据。我想以json:

的形式提供这些数据
<?php
    $data = array();

    foreach($this->dataFromDb as $value){
        $data[] = $value;
    }

    $json = json_encode($data);

    echo $json;
?>

不幸的是,这会在json中生成null值,例如$value['title']可能包含非utf-8字符,例如€。要解决这个问题,我改变了这一行。

$data[] = array_map(utf8_encode, $value);

但现在我在json输出中有\u00\u0080之类的字符串。我如何得到我的普通文本,就像它存储在json中的db中一样?当我尝试

print_r(json_decode($json));

我再次得到像für 599,95€这样奇怪的字符。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您还需要utf8_decode()数据:

<?php

    $data = array();
    $arr[] = 'a';
    $arr[] = "\x80";

    print_r($arr);

    $data[] = array_map(utf8_encode, $arr);

    $json = json_encode($data);

    $decoded_json =  json_decode($json);

    print_r($decoded_json);

    $decoded_data[] = array_map(utf8_decode, $decoded_json[0] );
    print_r($decoded_data);

?>

答案 1 :(得分:0)

使用iconv在字符集之间进行转换。

iconv("UTF-8", "CP1252", $data)

答案 2 :(得分:0)

每个连接数据库使用utf-8字符集。