jas*_*mar 5 java jersey character-encoding jakarta-ee
在 javax.ws.rs.core.Response.ResponseBuilder 中,当我使用波兰语(德语、法语等)国家字符设置文件名时,它会在将响应发送到客户端之前更改文件名:
\n\nResponseBuilder response = Response.ok(file);\nresponse.header("Content-Disposition", "attachment; filename=\xc5\xbc\xc3\xb3\xc5\x82ty.txt");\nRun Code Online (Sandbox Code Playgroud)\n\n此后,文件将被下载为“-\xc3\xb3Bty.txt”。如何解决这个问题?
\n\n编辑:\n整个应用程序可以使用 UTF-8 正常工作(例如,json 内容包含波兰语字符)。只有 http headers 没有。
\n好的,我找到了解决方案。根据RFC 6266,不应在标头中使用非 ASCII 字符,而应使用 url 编码值。对于这种情况有特殊的语法:
String encodedFileName = URLEncoder.encode(file.getName(), "UTF-8");
response.header("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3211 次 |
| 最近记录: |