Android 關於HttpClient上傳中文亂碼的解決辦法

來源:互聯網
上載者:User

標籤:

  使用過HttpClient的人都知道可以通過addTextBody方法來添加要上傳的文本資訊,但是,如果要上傳中文的話,或還有中文名稱的檔案會出現亂碼的問題,解決辦法其實很簡單:

第一步:設定MultipartEntityBuilder的編碼方式為UTF-8。

builder.setCharset(Charset.forName(HTTP.UTF_8));//佈建要求的編碼格式 

第二步:建立ContentType對象,指定UTF-8編碼。

ContentType contentType= ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8); 

第三步:使用addPart+ StringBody代替addTextBody。如:

StringBody stringBody=new StringBody("中文亂碼",contentType);builder.addPart("test",stringBody);

附上完整代碼:

ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);      HttpClient client=new DefaultHttpClient();// 開啟一個用戶端 HTTP 要求 HttpPost post = new HttpPost(url);//建立 HTTP POST 請求  MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.setCharset(Charset.forName(HTTP.UTF_8));//佈建要求的編碼格式builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//設定瀏覽器安全色模式int count=0;for (File file:files) {//            FileBody fileBody = new FileBody(file);//把檔案轉換成流對象FileBody//            builder.addPart("file"+count, fileBody);    builder.addBinaryBody("file"+count, file);    count++;}        builder.addTextBody("method", params.get("method"));//佈建要求參數builder.addTextBody("fileTypes", params.get("fileTypes"));//佈建要求參數StringBody stringBody=new StringBody("中文亂碼",contentType);builder.addPart("test", stringBody);HttpEntity entity = builder.build();// 產生 HTTP POST 實體      post.setEntity(entity);//佈建要求參數HttpResponse response = client.execute(post);// 發起請求 並返回請求的響應if (response.getStatusLine().getStatusCode()==200) {    return true;}return false;

 

Android 關於HttpClient上傳中文亂碼的解決辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.