PC端向服务器发送中文是正常的,而用android 客户端向服务端发送中文就是不行。我在WEB.XML中已经加了UTF-8的字符转换还是不行
下面的方法可以解决(红色)
在客户端把中文字符用URLEncoder.encode()进行转码,在服务器端用URLDecoder.decode()进行解码,这样就能正常的提取中文字符了
private boolean sendDataToService() {
String getNewsViewUrl=Constant.savePdetailUrl;
HttpClient client = new DefaultHttpClient();
//提拱默认的HttpClient实现
HttpPost request;
try {
request = new HttpPost(new URI(getNewsViewUrl));
List <NameValuePair> params=new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("context",
URLEncoder.encode("我是一个中国人")));
params.add(new BasicNameValuePair("address", "address"));
//发出HTTP request
Log.i("whc", "shape:"+share_content.getText().toString());
request.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
// request.setEntity(new UrlEncodedFormEntity(params));
//取得HTTP response
HttpResponse httpResponse=new DefaultHttpClient().execute(request);
Log.i("whc", "success");
Toast.makeText(this, "success", 3).show();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 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();
}
return true;
}