您现在的位置:首页 » 知识库 » 软件开发 » JAVA基础 JAVA基础
java关于HttpClient上传中文乱码的解决办法
发布日期:2018-12-25

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

 

 

  • 1.公司登记注册于2003年1月27日
    2.公司2006年起成为清远市政府定点协议供货商,电子采购供货商
    3.公司2007年被清远市相关政府部门评为安防行业状元
    4.公司2007年起成为长城电脑清远如意服务站(SP368)
    5.公司2007年承建清远市横河路口电子警察工程,开创清远电子警察先河。
  • 6.公司2007年起成为IBM合作伙伴、公司2010年底成为金蝶软件清远金牌代理(伙伴编号:30030013)
    7.公司组团队参加南方都市报组织的创富评选,获广东80强。公司申请多项软件著作权、专利权
    8.2016年起公司成为粤东西北地区为数不多的双软企业,确立“让软件驱动世界,让智能改变生活!"企业理想
  • 投资合作咨询热线电话:0763-3391888 3323588
  • 做一个负责任的百年企业! 天行健,君子以自强不息;地势坤,君子以厚德载物;
    为用户创造价值! 让软件驱动世界; 让智能改变生活; 超越顾客期望,帮助顾客成功;
    对客户负责,对员工负责,对企业命运负责!帮助支持公司的客户成功;帮助忠诚于公司的员工成功!
  • 联系电话:0763-3391888 3323588 3318977
    服务热线:18023314222 QQ:529623964
  • 工作QQ:2501204690 商务QQ: 602045550
    投资及业务投诉QQ: 529623964
    微信:小米哥 微信号:qysed3391888
    腾讯微博:桑达网络-基石与起点
  • E-MAIL:222#QYSED.CN ok3391888#163.com (请用@替换#)
在线客服
  • 系统集成咨询
    点击这里给我发消息
  • 网站\微信\软件咨询
    点击这里给我发消息
  • 售后服务
    点击这里给我发消息
  • 投资合作
    点击这里给我发消息