我写了一个简单的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)表中的字段“session”以这种方式定义:
Type : text
Collation: utf8_general_ci
我尝试启动脚本,从“users”表中选择一行,其中session的值为"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输出中使用sea session为空)
我认为问题是由角色°
生成的。我该如何解决这个问题?
修改
我尝试添加以下代码行php:
$session = utf8_decode($session);
我得到了这个:
{"name":"Mike","surname":"Stern","date":"2013-04-02","session":"1? session"}
我不再是null值,但°
被翻译成?
个字符。
答案 0 :(得分:1)
我添加这一行:
$connectiondb->set_charset('utf8');
结果如下:
{"name":"Mike","surname":"Stern","date":"2013-04-02","session":"1\u00b0 session"}
这似乎是一个问题,因为我想要°而不是相对的UTF8代码。
但是,由于php文件是从ajax调用的,我只是设置了
scriptCharset: "utf-8"
现在我可以引用data.session并获取"1° session"