Я отправляю данные в php из java, используя JSON, используя следующий код:
String url = "abc.php";
JSONObject json = new JSONObject();
json.put("msg", message); // message: "\ud83d\udc4d \ud83d\udc4e"
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 100000);
HttpPost post = new HttpPost(url);
StringEntity se = new StringEntity("json="+json.toString());
post.addHeader("content-type", "application/x-www-form-urlencoded");
post.setEntity(se);
HttpResponse response;
response = client.execute(post);
String resFromServer = org.apache.http.util.EntityUtils.toString(response.getEntity());
Log.i("resFromServer", resFromServer);
Код PHP:
if( isset($_POST["json"]) ) {
$jsonDecode = json_decode($_POST["json"]);
$msg = $jsonDecode->{"msg"};
echo $msg;
}
Но я получаю вывод как ????
Принимая во внимание, что выход должен быть
Есть ли проблема с кодировкой? Как это можно исправить?
Попробуйте сначала преобразовать запрошенный контент в utf8
Эти строки не могут быть UTF-16 на самом деле. Так что делайте это безопасно и попробуйте
if( isset($_POST["json"]) ) {
$string=$_POST['json'];
$jsonDecode = mb_convert_encoding($string, "UTF-8", mb_detect_encoding($string));
$jsonDecode = json_decode($jsonDecode);
$msg = $jsonDecode->{"msg"};
echo $msg;
}
Других решений пока нет …