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> |
+------+--------------------------------+
그것은 작동을 모든 특수 문자를 사용하지 않을 때는 괜찮습니다.
시간 내 주셔서 감사합니다.
데이터가 실제로 인코딩됩니까? 'json_encode'는 UTF-8로 인코딩 된 데이터를 기대하기 때문에 UTF-8이 아닌 것으로 추측됩니다. 실패하면 UTF-8로 인코딩되지 않습니다. 또한,'utf8_encode ($ content = $ data [ 'content']);는 아무것도하지 않습니다. – deceze
DB의 실제 데이터 인코딩에 대한 자세한 정보를 제공해야합니다. 또한 데이터가 올바르게 인코딩되었는지 확인하려면'mb_check_encoding() '을 사용하여 문자열을 확인하십시오. –
'utf8_encode'는'ISO-8859-1' 인코딩에서만 작동합니다. DB의 데이터에 다른 인코딩 (UTF-8이 아닌)이있는 경우에는 charset 변환에 utf8_encode를 사용하지 않아야합니다. 대신에'iconv'를 사용하십시오. – hindmost