2015-07-08 4 views
0

Я пошел по учебнику отсюда http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/, но я столкнулся с проблемой ответа JSON. Он возвращает null. Я думаю, что это связано с кодировкой символов, поскольку некоторые из содержимого, которое возвращается как null, включают символы °.Ответ JSON, возвращающий нуль

Код РНР:

// Check for empty result 
if (mysqli_num_rows($result) > 0) { 
// Looping through all results 

$response["ntmNotices"] = array(); 

while ($row = mysqli_fetch_array($result)) { 

    $ntmRow = array(); 
    $ntmRow["uploadDate"] = $row["uploadDate"]; 
    $ntmRow["uploadTime"] = $row["uploadTime"]; 
    $ntmRow["ntmTitle"] = $row["ntmTitle"]; 
    $ntmRow["ntmDate"] = $row["ntmDate"]; 
    $ntmRow["ntmContent"] = $row["ntmContent"]; 

    // push single row into final response array 
    array_push($response["ntmNotices"], $ntmRow); 
} 
// success 
$response["success"] = 1; 

// echoing JSON response  
echo json_encode($response); 

} else { 
// no rowsfound 
$response["success"] = 0; 

и ответ «ntmContent»: нулевая} ntmContent что содержит нечетные символы, но они появляются в порядке в базе данных.

В этом учебном пособии не рассматриваются проблемы, связанные с кодированием символов, поэтому он не подготовлен к нему, но как следует обрабатывать $ response для принятия нечетных символов?

Благодаря

+0

Какой тип символов это возвращение? – JoeCodeCreations

+0

Прежде чем '// повторять ответ JSON', что вы получаете от' print_r ($ response); '? Является ли он ожидаемым массивом или нулевым? –

+0

@ExecutiveCloser Привет, извините, я не уверен, что вы имеете в виду, он ничего не возвращает от «ntmContent», просто печатает «null» на веб-странице. –

ответ

1

Когда json_encode не может закодировать значение, оно выводит нуль.

Это связано с нечетными символами, которые вы указали в своем посте.

json_encode() работает только с UTF-8.

Try так:

$ntmRow["ntmContent"] = utf8_encode($row["ntmContent"]); 
+0

Привет, это похоже на трюк. Теперь я получаю вывод с «нечетными» символами как unicode следующим образом: location: \ u00a0Site \ u00a0 \ u00a0 \ u00a0 - это правильный тип вывода, который я должен ожидать? –

+0

Каковы странные символы, которые вы упомянули в своем вопросе. Что такое кодировка на db – meda

+0

Ну, пустое место, но «странные» символы (я думаю). Порядковые индикаторы: º и символ градуса: °. Если это помогает, сортировка будет utf8_general_ci. Спасибо –