android客户端向服务器提交请求的中文乱码有关问题
android客户端向服务器提交请求的中文乱码问题
下午尝试着从android客户端提交中文字符到服务器端,服务器是tomcat的,利用android自带的apache的httpclient组件,用post方式提交。
客户端提交请求的代码如下:
在服务器端提取中文数据后仍然是乱码,但奇怪的是,如果在PC客户端用main方法提交,完全相同的代码,服务器端却能正确提取中文字符,难道是android本身的问题?
期待高手能解答,下面说下解决方案吧,其实很简单,我在客户端把中文字符用URLEncoder.encode()进行转码,在服务器端用URLDecoder.decode()进行解码,这样就能正常的提取中文字符了,改动过的客户端代码如下:
下午尝试着从android客户端提交中文字符到服务器端,服务器是tomcat的,利用android自带的apache的httpclient组件,用post方式提交。
客户端提交请求的代码如下:
DefaultHttpClient mHttpClient = new DefaultHttpClient(); HttpPost mPost = new HttpPost("http://10.0.2.2:808/AndroidServer/userService.service"); List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>(); pairs.add(new BasicNameValuePair("method","addUser")); pairs.add(new BasicNameValuePair("email","king@163.com")); pairs.add(new BasicNameValuePair("password","112358")); pairs.add(new BasicNameValuePair("site.province","北京市")); pairs.add(new BasicNameValuePair("site.city","东城区")); try { mPost.setEntity(new UrlEncodedFormEntity(pairs,HTTP.UTF_8)); HttpResponse response = mHttpClient.execute(mPost); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); }
在服务器端提取中文数据后仍然是乱码,但奇怪的是,如果在PC客户端用main方法提交,完全相同的代码,服务器端却能正确提取中文字符,难道是android本身的问题?
期待高手能解答,下面说下解决方案吧,其实很简单,我在客户端把中文字符用URLEncoder.encode()进行转码,在服务器端用URLDecoder.decode()进行解码,这样就能正常的提取中文字符了,改动过的客户端代码如下:
pairs.add(new BasicNameValuePair("site.province",URLEncoder.encode("北京市"))); pairs.add(new BasicNameValuePair("site.city",URLEncoder.encode("东城区")));
1 楼
woodn_z
2011-04-12
为什么我的英文也是乱码?用了你提供的方法还是一样,乱码。望赐教!