これまで何度も聞かれた質問をしていることは承知していますが、問題点を明確にする必要があると感じています。
JSONでエンコードされた文字列をPHPスクリプトに送信するAndroidアプリがあります。次のコードは、データを完全なJSON文字列として保存します。(1つの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文字列に含まれるテキストの一部がutf-8でエンコードされたAndroidのstrings.xmlから取得されることです。たとえば、strings.xmlファイル<item>Can\'t get there</item>
は、MySQLで「Canu0027tgetthere」として保存されます。また、「Wholesale&Retail」は「Wholesaleu0026Retail」として保存されます。
またjson_decode()
、JSON文字列にutf-8でエンコードされていない文字が含まれているため、phpで失敗しました。次のエラーが発生しました:不正な形式のUTF-8文字、おそらく正しくエンコードされていません。
これらすべてのシナリオをどのように処理できますか?助けてください。