我在将 utf-8 从 android 传输到 php 时遇到问题。我在网上查找了许多解决方案,但它们都以某种方式无法发送 UTF-8。
我的 Java 代码
String str = "";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(params[0]);
try {
// set up post data
JSONObject json = getJSON();
JSONArray postjson=new JSONArray();
postjson.put(json);
// Post the data:
httppost.setHeader("json",json.toString());
httppost.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
httppost.getParams().setParameter("jsonpost",postjson);
httppost.getParams().setParameter("jsonpost",postjson);
HttpResponse response = httpclient.execute(httppost);
if(response != null)
{
str = getInputString(response);
return str;
}
}
catch (UnsupportedEncodingException e) {
return "";
}
catch (Exception e) {
return "";
}
return "";
另一方面,我的 php
<?php
header'Content-Type:text/plain; charset=utf-8');
$json = $_SERVER['HTTP_JSON'];
$data = json_decode($json);
$message = $data->message;
echo $message;
?>
我收到的输出只是一个空白字符串,如果它是一个像“欢迎”这样的汉字,但如果它像“欢迎”。该消息将有一个输出 Welcome。这里的主要问题是什么?如果有人提供帮助,它将不胜感激。谢谢。
解决方案:
$data = json_decode(file_get_contents('php://input'));
$message = $data->message;
echo $message;
?>