我从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€
这样奇怪的字符。
有什么想法吗?
答案 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字符集。