-
标题:Android中HTTP请求中文乱码解决办法
-
问题描述:当在Android应用中进行HTTP请求时,有时会出现中文乱码的情况。如何解决这个问题?
-
解决方案:
-
在HTTP请求时,使用UTF-8编码提交中文参数
在Android中,HTTP请求时可以通过设置请求头中的Content-Type参数为application/x-www-form-urlencoded;charset=UTF-8来指定请求中包含中文参数。例如:
java
private void sendPost() throws Exception {
String url = "http://www.example.com";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("param1", "你好"));
urlParameters.add(new BasicNameValuePair("param2", "世界"));
post.setEntity(new UrlEncodedFormEntity(urlParameters, "UTF-8"));
HttpResponse response = client.execute(post);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result.toString());
} -
在服务端,使用UTF-8解码接收中文参数
在服务端代码中,需要使用UTF-8解码接收到的中文参数,才能正确识别参数内容。例如,在Java Servlet中,可以使用request.setCharacterEncoding("UTF-8")来设置接收编码。例如:
java
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
System.out.println(param1);
System.out.println(param2);
} -
示例说明:
-
客户端代码示例
在客户端代码中,我们定义了一个sendPost方法来进行HTTP请求。其中,我们通过设置请求头Content-Type参数为application/x-www-form-urlencoded;charset=UTF-8来提交中文参数。同时,在提交参数之前,我们需要将参数进行UTF-8编码。
-
服务端代码示例
在服务端代码中,我们首先通过request.setCharacterEncoding("UTF-8")设置接收编码为UTF-8。之后,我们可以通过request.getParameter方法获取到接收到的中文参数。由于已经设置了接收编码,所以这些参数已经被正确解码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中HTTP请求中文乱码解决办法 - Python技术站