2014-02-20 104 views
0

æ ø å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> | 
+------+--------------------------------+ 

它的工作原理所有罚款,当我不使用任何特殊字符。

谢谢你的时间!

+0

数据真正处于什么编码状态?我猜测它不是* UTF-8,因为'json_encode'需要UTF-8编码数据,而失败则意味着它不是UTF-8编码。另外,'utf8_encode($ content = $ data ['content']);'什么也不做。 – deceze

+0

您应该提供关于数据库真实数据编码的更多信息。为了确保数据编码是否正确,请使用'mb_check_encoding()'检查字符串' – 2014-02-20 08:22:18

+0

'utf8_encode'仅适用于'ISO-8859-1'编码。如果数据库中的数据有其他编码(但不是'UTF-8'),则不应使用'utf8_encode'进行字符集转换。改用'iconv'。 – hindmost

回答

0

我修复了这个问题。

问题确实是在问题下的评论中所述的编码。柜面他们遇到了类似的问题

mysql_query("SET CHARACTER SET utf8"); 

只是为其他用户:

我通过请求数据之前运行下面的查询解决了这个问题。