2019-12-04 java下载文件,文件名中文乱码问题解决

文件明定义

RFC的标准做法是按照如下格式:

Content-Disposition: attachment;
                     filename="$encoded_fname";
                     filename*=utf-8''$encoded_fname

其中, $encoded_fname 指的是将 UTF-8 编码的原始文件名按照 RFC 3986 进行百分号编码(percent encoding)后得到的

java代码示例:

            outputStream = response.getOutputStream();
            String name = " 麦宝直播间配置文件";
            String disposition  = "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(name, "utf-8");
            response.setCharacterEncoding("utf-8");
            response.setContentType("multipart/form-data");
            response.setHeader("Content-Disposition", disposition);


空格encode之后变成+号的问题

需要在encode之后,手动对+号替换,替换回urlencode的空格,也就是%20

fileName.replaceAll("+","%20");

参考 文件下载文件名乱码的几个问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容