java项目中下载文件文件名乱码
时间: 2023-11-17 15:20:52 浏览: 179
在 Java 项目中,如果下载的文件名出现乱码,一般是由于浏览器对中文文件名的编码方式不同所导致的。可以尝试以下方法解决:
1. 对文件名进行 URL 编码,转换成浏览器可以识别的编码方式,例如使用 `URLEncoder.encode(fileName, "UTF-8")` 对文件名进行编码。
2. 在设置响应头时,设置 Content-Disposition 属性的文件名参数,例如:
```
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
```
其中,`filename*=UTF-8''` 表示文件名采用 UTF-8 编码方式,`URLEncoder.encode(fileName, "UTF-8")` 是对文件名进行 URL 编码。
3. 将文件名进行 Base64 编码,例如使用 `Base64.getEncoder().encodeToString(fileName.getBytes("UTF-8"))` 对文件名进行编码,然后在设置响应头时,设置 Content-Disposition 属性的文件名参数,例如:
```
response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(Base64.getDecoder().decode(fileName), "UTF-8") + "\"");
```
其中,`filename` 属性值用双引号括起来,`Base64.getDecoder().decode(fileName)` 是对文件名进行 Base64 解码,然后用 UTF-8 编码方式进行转换。
阅读全文