使用过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;

【原文地址】

转载于:https://www.cnblogs.com/liaojie970/p/9389901.html

关于HttpClient上传中文乱码的解决办法相关推荐

  1. php 上传乱码_如何解决php文件上传中文乱码问题

    php文件上传中文乱码的解决办法:首先打开相应的PHP文件:然后通过"iconv("UTF-8", "gbk",$name)"方法对文件名进 ...

  2. 如何解决PHP上传中文出错,如何解决php上传中文乱码的问题

    php上传中文乱码的解决办法:首先在相应的文件中添加"enctype="multipart/form-data""方法:然后通过"iconv(&quo ...

  3. MYSQL使用UTF8中文乱码终极解决办法

    转自:http://wenku.baidu.com/view/d2d4f15ba8114431b80dd81f.html MYSQL使用UTF8中文乱码终极解决办法   作者:刘明灵 liumingl ...

  4. Ubuntu系统中文乱码的解决办法

    Ubuntu系统中文乱码的解决办法 文章目录 Ubuntu系统中文乱码的解决办法 1. 安装中文语言 2. 安装语言设置的命令locale 3. 安装中文的相关字体 4. 修改语言的环境变量 4.1 ...

  5. xp 不能上传邮件附件的解决办法

    xp 不能上传邮件附件的解决办法 大漠  12:53:13 inxp 不能上传邮件附件的解决办法 TcpWindowSize 设为65535(十进制) Tcp1323Opts 设为0 注册表条目 [H ...

  6. freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...

  7. linux ftp 登录慢,linux中vsftpd登录,上传下载文件慢解决办法linux操作系统 -电脑资料...

    vsftpd登录慢主要是nameserver #定义DNS服务器的IP地址没有设置了,这样我们只要设置或更新一下nameserver即可解决了, 在使用vsftpd的过程中,一直以来都有一个问题就是在 ...

  8. linux unzip乱码,Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法 Linux 中unzip解压时中文乱码的解决办法 当我们在linux中解压一个含有中文名字的压缩包如"资料.zip"时,如果直接使 ...

  9. Odoo12导出文件中文乱码的解决办法

    在odoo12中导出来的csv文件,用excel打开时中文乱码. 解决办法: 1.先用记事本打开,你会发现中文能正常显示,此时另存为时,编码选ANSI,保存: 2.excel打开,中文可以正常显示了

最新文章

  1. 经典算法书籍推荐以及算法书排行【算法四库全书】
  2. 基于RDKit探索DrugBank(demo)
  3. Eclipse C++的配置问题launch failed binary not found
  4. 领域驱动设计,让程序员心中有码(五)
  5. 什么是Web 2.0——下一代软件的设计模式和商业模式 (全文翻译—1 博客版序)
  6. hdu1556 Color the ball
  7. 分治法求最大和最小值
  8. ECMAScript版本号总结
  9. API安全风险与防范
  10. 口腔科的固定修复计算机辅助设计收,3D打印技术在口腔种植修复中的应用进展...
  11. Unigui使用IconFont图标
  12. 使用FeedDemon整理RSS Feed
  13. 电子设计(1)二极管防电源反接电路
  14. 易企秀怎么转换成html5,易企秀怎么免费制作h5?
  15. 【MMD动作+镜头下载】Chocolate Train
  16. 医疗器械小程序或手机APP软件开发方案
  17. [AD资料] AD入门之AD10软件安装
  18. Python进程池apply_async的callback函数不执行的解决方案
  19. MapReduce的容错机制
  20. shop--10.店铺列表(后台)

热门文章

  1. 2022-2028年中国光掩膜行业市场行情监测及未来前景规划报告
  2. 2022-2028年中国汽车塑料行业市场深度分析及投资趋势预测报告
  3. 如何优雅的在python中暂停死循环?
  4. vscode 高效使用指南
  5. 55道常见的计算机面试题
  6. 有存款,才能过得更踏实
  7. 【牛腩新闻发布系统】整合前台04
  8. RabbitMQ超详细安装教程(Linux)
  9. Mysql悲观锁以及乐观锁案例说明
  10. [JAVA EE]ajax 方式提交数据