JSON不读取特殊字符

时间:2014-02-20 08:17:16

标签: php json encoding utf-8

当我尝试使用PHP将以下字符编码为JSON时: æ ø å

我只会说null应该出现的地方。我将页眉编码设置为UTF-8,我知道这个编码会打印这些字母就好了。但由于某种原因,它不起作用。

这是我目前的代码:

header('Content-Type: text/html; charset=utf-8');

if (isset($_GET['count'])) {
    $count = $_GET['count'];

    $data_exists = mysql_query("SELECT * FROM display");
    if (mysql_num_rows($data_exists) > $count) {
        // Next record is available
        $get_data = mysql_query("SELECT * FROM display LIMIT ".$count.",1");
        while ($data = mysql_fetch_assoc($get_data)) {

            $id = $data['id'];
            utf8_encode($content = $data['content']);

            $return_data = array('id' => $id, 'content' => $content);

            echo json_encode($return_data);

        }
    } else {
        // Next record is not available

    }
}

当我运行此代码时,我得到这个JSON字符串:{"id":"1","content":null}

数据库记录如下:

+------+--------------------------------+
|  ID  |             Text               |
+------+--------------------------------+
|    1 | <div class="text">æøå...</div> |
+------+--------------------------------+

当我不使用任何特殊字符时,它可以正常工作。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

问题确实是问题中的评论中所述的编码。

我通过在请求数据之前运行以下查询来解决此问题:

mysql_query("SET CHARACTER SET utf8");

仅针对其他用户,他们遇到了类似的问题。