Android HttpPost数据中文乱码的解决方案
jopen
13年前
在项目中,以HttpPost方式向服务器上提交数据时,服务器上中文竟然显示乱码,针对该种情况证明解决呢?其实,这样的问题,在架构的时候,就应该考虑到,如果牵扯到各个不同的平台应用,尽量统一使用UTF8编码,可以少很多麻烦。当然在post数据的时候,可以指定编码,请参阅下面的函数: <pre class="brush:java; toolbar: true; auto-links: false;"> public Map<String, Object> CreateNote(int albumId, String title, String remark) { String noteId = ""; Map<String, Object> map = new HashMap<String, Object>(); try { HttpParams parms = new BasicHttpParams(); parms.setParameter("charset", HTTP.UTF_8); HttpConnectionParams.setConnectionTimeout(parms, 8 * 1000); HttpConnectionParams.setSoTimeout(parms, 8 * 1000); HttpClient httpclient = new DefaultHttpClient(parms); HttpPost httppost = new HttpPost(ConfigHelper.CreateUri); httppost.addHeader("Authorization", mToken); httppost.addHeader("Content-Type", "application/json"); httppost.addHeader("charset", HTTP.UTF_8); JSONObject obj = new JSONObject(); obj.put("title", title); obj.put("categoryId", mCategoryId); obj.put("sourceUrl", GetSourceUri()); JSONArray arr = new JSONArray(); arr.put(DateFormat.format("yyyyMM",Calendar.getInstance(Locale.CHINA))); obj.put("tags", arr); obj.put("content", remark); httppost.setEntity(new StringEntity(obj.toString(), HTTP.UTF_8)); HttpResponse response; response = httpclient.execute(httppost); int code = response.getStatusLine().getStatusCode(); if (code == ConstanDefine.ErrorCode.SuccOfHttpStatusCode) { String rev = EntityUtils.toString(response.getEntity()); obj = new JSONObject(rev); noteId = obj.getString("id"); map.put("return_code", "0"); map.put("content", rev); } } catch (Exception e) { if (map.containsKey("return_code")) { map.remove("return_code"); } map.put("return_code", "1"); } return map; }</pre>