我写了一个简单的 php 文件(使用 GET 方法调用),它返回一个 json 文件。代码如下:
$q=$_GET["q"];
$query = "SELECT name, surname, data, session from users where id= ?";
$stmt = $connectiondb->prepare($query);
$stmt->bind_param('i', $id);
$id= $q;
$stmt->execute();
$stmt->bind_result($name,$surname,$data,$session);
$stmt->fetch();
$stmt->close();
$array = array("name" => $name, "surname" => $surname,"data" => $data, "session" => $session);
echo json_encode($array);
我的数据库(mySql)的表中的“会话”字段是这样定义的:
Type : text
Collation: utf8_general_ci
我尝试启动脚本,从表“用户”中选择一行,其中会话具有值"last session"
,结果如下:
{"name":"John","surname":"Mayer","date":"2013-01-01","session":"last session"}
这很好。但是,当我表中的已归档会话具有该值"1° session"
时,脚本会生成以下输出:
{"name":"Mike","surname":"Stern","date":"2013-04-02","session":null}
(你可以在 json 输出中海上会话为空)
我认为问题是由字符产生的°
。我怎么解决这个问题?
编辑:
我尝试添加以下代码行:
$session = utf8_decode($session);
我得到了这个:
{"name":"Mike","surname":"Stern","date":"2013-04-02","session":"1? session"}
我不再有空值,而是°
被翻译成?
字符。