Http网络传递参数中文乱码问题解决办法

来源:互联网 发布:笔记本硬盘坏了数据恢复 编辑:程序博客网 时间:2024/06/05 07:32

我们通过Http连接网络传递中文参数时经常遇到乱码问题,乱码问题一般是客户端和服务端编码方式不一至造成的.

首先统一客户端和服务端的编解码方式为UTF-8.

Web服务端一般采用Tomcat服务器,Tomcat默认编码方式为ISO-8859-1,iso-8859-1是不支持中文的,也就是说不做处理,中文是一定乱码的。
代码处理可用

1String userName = new String(userName.getBytes("ISO-8859-1"), "UTF-8");

更改Tomcat编码方式为UTF-8.

在TOMCAT的配置文件的server.xml中更改:

1  <Connector port="8080"protocol="HTTP/1.1"
2              connectionTimeout="20000"
3              redirectPort="8443"
4              URIEncoding="UTF-8" />

添加URIEncoding=UTF-8

Android客户端

发送Get请求,首先对请求URL地址的中文进行UTF-8编码.

1String name =URLEncoder.encode("中国万岁","UTF-8");

发送Post请求,对参数也要进行UTF-8编码,方式如下:

1BasicNameValuePair userNamePair = newBasicNameValuePair("userName""李四");
2BasicNameValuePair passWordPair = newBasicNameValuePair("passWord""321");
3             
4ArrayList<BasicNameValuePair> parameters = newArrayList<BasicNameValuePair>();
5parameters.add(userNamePair);
6parameters.add(passWordPair);
7 
8UrlEncodedFormEntity entity = newUrlEncodedFormEntity(parameters,HTTP.UTF_8);
9 
10httpPost.setEntity(entity);
11         
12httpPost.setHeader("Content-Type""application/x-www-form-urlencoded; charset=utf-8");
13 
14//乱码关键代码
151.UrlEncodedFormEntity entity = newUrlEncodedFormEntity(parameters,HTTP.UTF_8);
162.httpPost.setHeader("Content-Type""application/x-www-form-urlencoded; charset=utf-8");

注:如果在Servlet中设置request.setCharacterEncoding(“UTF-8″);上面第2行代码可以不设置.

0 0