0

我写了一个简单的 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"}

我不再有空值,而是°被翻译成?字符。

4

1 回答 1

1

正如这篇文章中所建议的

我添加这一行:

$connectiondb->set_charset('utf8');

结果如下:

{"name":"Mike","surname":"Stern","date":"2013-04-02","session":"1\u00b0 session"}

这似乎是一个问题,因为我想要°而不是相对的 UTF8 代码。

但是,由于 php 文件被称为 form ajax 我只是设置

scriptCharset: "utf-8"

现在我可以参考 data.session 并获得"1° session"

于 2013-07-09T19:33:51.227 回答