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> |
+------+--------------------------------+
它的工作原理所有罚款,当我不使用任何特殊字符。
谢谢你的时间!
数据真正处于什么编码状态?我猜测它不是* UTF-8,因为'json_encode'需要UTF-8编码数据,而失败则意味着它不是UTF-8编码。另外,'utf8_encode($ content = $ data ['content']);'什么也不做。 – deceze
您应该提供关于数据库真实数据编码的更多信息。为了确保数据编码是否正确,请使用'mb_check_encoding()'检查字符串' – 2014-02-20 08:22:18
'utf8_encode'仅适用于'ISO-8859-1'编码。如果数据库中的数据有其他编码(但不是'UTF-8'),则不应使用'utf8_encode'进行字符集转换。改用'iconv'。 – hindmost