android客户端向服务器提交请求的中文乱码问题

本文介绍了一种在Android客户端使用HTTP Post提交中文字符至Tomcat服务器时遇到的乱码问题及解决方案。通过客户端编码和服务器端解码的方法,成功解决了中文乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下午尝试着从android客户端提交中文字符到服务器端,服务器是tomcat的,利用android自带的apache的httpclient组件,用post方式提交。 
     客户端提交请求的代码如下: 
Java代码   收藏代码
  1.     DefaultHttpClient mHttpClient = new DefaultHttpClient();  
  2.     HttpPost mPost = new HttpPost("http://10.0.2.2:808/AndroidServer/userService.service");  
  3.     List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();   
  4.     pairs.add(new BasicNameValuePair("method","addUser"));  
  5.     pairs.add(new BasicNameValuePair("email","king@163.com"));  
  6.     pairs.add(new BasicNameValuePair("password","112358"));  
  7.     pairs.add(new BasicNameValuePair("site.province","北京市"));  
  8.     pairs.add(new BasicNameValuePair("site.city","东城区"));  
  9.     try {  
  10. mPost.setEntity(new UrlEncodedFormEntity(pairs,HTTP.UTF_8));  
  11. HttpResponse response = mHttpClient.execute(mPost);  
  12.      } catch (UnsupportedEncodingException e) {  
  13. // TODO Auto-generated catch block  
  14.  e.printStackTrace();  
  15.      } catch (ClientProtocolException e) {  
  16. // TODO Auto-generated catch block  
  17. e.printStackTrace();  
  18.      } catch (IOException e) {  
  19. // TODO Auto-generated catch block  
  20. e.printStackTrace();  
  21.      } catch (IllegalStateException e) {  
  22. // TODO Auto-generated catch block  
  23. e.printStackTrace();  
  24.      }   

    在服务器端提取中文数据后仍然是乱码,但奇怪的是,如果在PC客户端用main方法提交,完全相同的代码,服务器端却能正确提取中文字符,难道是android本身的问题? 
    期待高手能解答,下面说下解决方案吧,其实很简单,我在客户端把中文字符用URLEncoder.encode()进行转码,在服务器端用URLDecoder.decode()进行解码,这样就能正常的提取中文字符了,改动过的客户端代码如下: 
Java代码   收藏代码
  1. pairs.add(new BasicNameValuePair("site.province",URLEncoder.encode("北京市")));  
  2. pairs.add(new BasicNameValuePair("site.city",URLEncoder.encode("东城区")));  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值