Java отправка данных UTF-16 в PHP не работает

Я отправляю данные в 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;
}

Но я получаю вывод как ????

Принимая во внимание, что выход должен быть �� ��

Есть ли проблема с кодировкой? Как это можно исправить?

0

Решение

Попробуйте сначала преобразовать запрошенный контент в 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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]