2014-02-20 7 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

데이터가 실제로 인코딩됩니까? 'json_encode'는 UTF-8로 인코딩 된 데이터를 기대하기 때문에 UTF-8이 아닌 것으로 추측됩니다. 실패하면 UTF-8로 인코딩되지 않습니다. 또한,'utf8_encode ($ content = $ data [ 'content']);는 아무것도하지 않습니다. – deceze

+0

DB의 실제 데이터 인코딩에 대한 자세한 정보를 제공해야합니다. 또한 데이터가 올바르게 인코딩되었는지 확인하려면'mb_check_encoding() '을 사용하여 문자열을 확인하십시오. –

+0

'utf8_encode'는'ISO-8859-1' 인코딩에서만 작동합니다. DB의 데이터에 다른 인코딩 (UTF-8이 아닌)이있는 경우에는 charset 변환에 utf8_encode를 사용하지 않아야합니다. 대신에'iconv'를 사용하십시오. – hindmost

답변

0

이 문제가 해결되었습니다.

문제는 실제로 질문 아래의 주석에 언급 된 인코딩이었습니다.

나는 데이터를 요청하기 전에 다음 쿼리를 실행하여이 문제를 해결 :

mysql_query("SET CHARACTER SET utf8"); 

을 그냥 다른 사용자들이 비슷한 문제로 실행 넣다.