在项目中,以HttpPost方式向服务器上提交数据时,服务器上中文竟然显示乱码,针对该种情况证明解决呢?其实,这样的问题,在架构的时候,就应该考虑到,如果牵扯到各个不同的平台应用,尽量统一使用UTF8编码,可以少很多麻烦。当然在post数据的时候,可以指定编码,请参阅下面的函数:
转自:http://www.open-open.com/lib/view/open1328168459890.html
01 | public Map<String, Object> CreateNote( int albumId, String title, |
02 | String remark) { |
03 | String noteId = "" ; |
04 | Map<String, Object> map = new HashMap<String, Object>(); |
05 | try { |
06 | HttpParams parms = new BasicHttpParams(); |
07 | parms.setParameter( "charset" , HTTP.UTF_8); |
08 | HttpConnectionParams.setConnectionTimeout(parms, 8 * 1000 ); |
09 | HttpConnectionParams.setSoTimeout(parms, 8 * 1000 ); |
10 | HttpClient httpclient = new DefaultHttpClient(parms); |
11 | HttpPost httppost = new HttpPost(ConfigHelper.CreateUri); |
12 | httppost.addHeader( "Authorization" , mToken); |
13 | httppost.addHeader( "Content-Type" , "application/json" ); |
14 | httppost.addHeader( "charset" , HTTP.UTF_8); |
15 |
16 | JSONObject obj = new JSONObject(); |
17 | obj.put( "title" , title); |
18 | obj.put( "categoryId" , mCategoryId); |
19 | obj.put( "sourceUrl" , GetSourceUri()); |
20 |
21 | JSONArray arr = new JSONArray(); |
22 |
23 | arr.put(DateFormat.format( "yyyyMM" ,Calendar.getInstance(Locale.CHINA))); |
24 | obj.put( "tags" , arr); |
25 | obj.put( "content" , remark); |
26 | httppost.setEntity( new StringEntity(obj.toString(), HTTP.UTF_8)); |
27 | HttpResponse response; |
28 | response = httpclient.execute(httppost); |
29 | int code = response.getStatusLine().getStatusCode(); |
30 | if (code == ConstanDefine.ErrorCode.SuccOfHttpStatusCode) { |
31 | String rev = EntityUtils.toString(response.getEntity()); |
32 | obj = new JSONObject(rev); |
33 | noteId = obj.getString( "id" ); |
34 | map.put( "return_code" , "0" ); |
35 | map.put( "content" , rev); |
36 | } |
37 | } catch (Exception e) { |
38 | if (map.containsKey( "return_code" )) { |
39 | map.remove( "return_code" ); |
40 | } |
41 | map.put( "return_code" , "1" ); |
42 | } |
43 | return map; |
44 | } |