我从java代码向php服务器发送请求,然后在服务器端发送echo
作为响应收到的内容。
所以从理论上讲,我会收到我发送的内容。但我发送UTF-8内容有问题,当我发送阿拉伯字符时,我收到了意想不到的字符
我的java请求代码:
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,
TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
String requestString = "سلام";
StringEntity entity = new StringEntity(requestString, "UTF-8");
entity.setContentType("application/json");
entity.setContentEncoding("UTF-8");
HttpPost httpPost = new HttpPost(uri);
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", "application/json; charset=utf-8");
httpPost.setHeader("Accept-Charset", "utf-8");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
HttpClient httpClient = new DefaultHttpClient(httpParams);
String responseString=null;
try
{
responseString = httpClient.execute(httpPost, responseHandler);
}
catch (IOException e)
{ e.printStackTrace(); }
我在服务器端的代码:
<?php
echo file_get_contents('php://input');
?>
在此测试中,我发送字符串“سلام
”,但作为回应,我收到“سÙاÙ
”。
我也尝试用php上的iconv(...)
方法更改字符集来解决问题,但我失败了
我甚至不知道问题出在客户端或服务器上。有人帮忙吗?
答案 0 :(得分:0)
回答我自己的问题:
在我的情况下,问题出在服务器端。我改变了服务器响应的标题,解决了问题:
header('Content-Type:application / json; charset = utf-8');