Я знаю, что задаю вопрос, который задавали много раз раньше, но я чувствую, что мне нужно разъяснить мою проблему.
У меня есть приложение для Android, которое отправляет закодированную строку JSON в скрипт PHP. Следующий код сохраняет данные как полную строку JSON. (Существуют также другие функции для правильной записи данных в несколько полей, а не только как одна строка JSON)
$json_complete = $_POST['questionnaire']; $q = json_decode($json_complete, true); //save complete json string to database $query_upload = "INSERT INTO questions_json (q_id, json) VALUES('".mysql_real_escape_string($q[qID])."', '$json_complete') ON DUPLICATE KEY UPDATE json = VALUES(json)"; $result = mysql_query($query_upload) or errorReport("Error in query: $query_upload. ".mysql_error()); if (!$result) errorReport($result);
Проблема в том, что часть текста, включенного в строку JSON, берется из strings.xml в Android, который закодирован в utf-8. В качестве примера в файле strings.xml <item>Can\'t get there</item>
сохраняется как «Canu0027t get there» в MySQL. Также «Оптовая и розничная торговля» сохраняется как «Оптовая продажа u0026 Retail».
У меня также был json_decode()
в php fail на мне из-за не utf-8 закодированных символов в строке JSON. Появилась следующая ошибка: неправильные символы UTF-8, возможно, неправильно закодированные.
Как я могу справиться со всеми этими сценариями? Любая помощь пожалуйста.