UTF-8内容Java请求和PHP响应

时间:2013-07-25 11:02:42

标签: java php utf-8

我从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(...)方法更改字符集来解决问题,但我失败了 我甚至不知道问题出在客户端或服务器上。有人帮忙吗?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:
在我的情况下,问题出在服务器端。我改变了服务器响应的标题,解决了问题:

  

header('Content-Type:application / json; charset = utf-8');