我使用org.apache.catalina.util.URLEncoder对文件名进行了编码,并在内容处理标头中设置如下:
String encoded = urlEncoder.encode(fileName, StandardCharsets.UTF_8);
response.setHeader("Content-Disposition", "attachment;filename=""+encodedFileName+""");
文件名:ຕົວຢ່າງ.pptx
编码:%E0%BA/95%E0%BA%BB%E0%BA%A7%E0%BA%A2%E0%BB%88%E0%BA%B2%E0%BA%87%pptx
在chrome浏览器中下载时,它会正确解码和下载。但safari并没有解码这个名字,而是以编码格式下载。
此外,从safari浏览器下载时,扩展名会附加到文件名中。类似%E0%BA%95%E0%BA%BB%E0%BA%A7%E0%BA%A2%E0%BB%88%E0%BA%B2%E0%BA%87%2Epptx.pptx
谢谢,提前。
因为对文件名进行URL编码是不可移植的。
所有细节都在RFC 6266中;上面描述的格式将适用于所有当前浏览器。