Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UTF-8内容Java请求和PHP响应_Java_Php_Utf 8 - Fatal编程技术网

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

UTF-8内容Java请求和PHP响应,java,php,utf-8,Java,Php,Utf 8,我从一个java代码向php服务器发送一个请求,然后在服务器端我只是echo收到的响应。 所以理论上我会收到我发送的东西。但我在发送UTF-8内容时遇到问题,当我发送阿拉伯语字符时,会收到意外字符。 我的java请求代码: HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); HttpCo

我从一个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(); }
HttpParams HttpParams=new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,
超时(毫秒);
HttpConnectionParams.setSoTimeout(httpParams,超时0毫秒);
String requestString=“سلام”;
StringEntity实体=新的StringEntity(请求字符串,“UTF-8”);
entity.setContentType(“应用程序/json”);
实体。setContentEncoding(“UTF-8”);
HttpPost HttpPost=新的HttpPost(uri);
httpPost.setEntity(实体);
setHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
httpPost.setHeader(“接受字符集”、“utf-8”);
ResponseHandler ResponseHandler=新BasicResponseHandler();
HttpClient HttpClient=新的默认HttpClient(httpParams);
字符串responseString=null;
尝试
{
responseString=httpClient.execute(httpPost,responseHandler);
}
捕获(IOE异常)
{e.printStackTrace();}
我的服务器端代码:

<?php
    echo file_get_contents('php://input');
?>

在这个测试中,我发送字符串“
但作为响应,我收到“
字符§§

我还尝试在php上使用
iconv(…)
方法更改字符集,但失败了。

我甚至不知道问题出在客户端或服务器上。有人有帮助的想法吗?

回答我自己的问题:
在我的例子中,问题出在服务器端。我更改了服务器响应的标题,问题已解决:

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

可能重复: