0

我从 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(...)但我失败了。
我什至不知道问题出在客户端还是服务器上。有没有人有帮助的想法?

4

1 回答 1

0

回答我自己的问题:
就我而言,问题出在服务器端。我更改了服务器响应的标头并解决了问题:

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

于 2013-07-25T11:31:49.927 回答