httpclient3.1上传文件中文名乱码解决

在tomcat中使用httpclient3.1来传文件到后台(后台是用cxf发布webservice服务,在jboss上运行),的时候,中文文件名会一直出现乱码问题,,在网上搜了一些资料之后(参考:

commons.httpclient上传文件的文件名的中文问题),继承FilePart类重新写了sendDispositionHeader方法:

protected void sendDispositionHeader(OutputStream out)
    throws IOException {
        LOG.trace("enter sendDispositionHeader(OutputStream out)");
        super.sendDispositionHeader(out);
        String filename = this.source.getFileName();
        if (filename != null) {
            out.write(FILE_NAME_BYTES);
            out.write(QUOTE_BYTES);
            out.write(EncodingUtil.getAsciiBytes(filename));
            out.write(QUOTE_BYTES);
        }
    }

把out.write(EncodingUtil.getAsciiBytes(filename));修改为

out.write(EncodingUtil.getBytes(filename, "utf-8"));

然后发现后台接收文件的时候能接收到中文名字了..但是只能是某些中文,,有一些中文会出错..感觉很怪异..

继续谷哥~~~后来又看到一篇文章说java中的编码和java无关,因为都是unicode码,但是和java平台有关,比如操作系统,应用容器等等,

then...把编码改成GBK.和接收请求的时候设置 request.setCharacterEncoding("GBK");

在new FilePart的时候指定GBK编码:

FilePart filePart = new CustomFilePart(uploadFile.getName(), uploadFile, null, "GBK");
上面那句out改为:

<pre name="code" class="java">out.write(EncodingUtil.getBytes(filename, getCharSet()));

 

后台顺利接收中文名文件Done!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值