java - Jersey ResponseBuilder 文件名编码

标签 java jakarta-ee character-encoding jersey

<分区>

在 javax.ws.rs.core.Response.ResponseBuilder 中,当我使用波兰语(德语、法语等)国家字符设置文件名时,它会在响应发送到客户端之前更改文件名:

ResponseBuilder response = Response.ok(file);
response.header("Content-Disposition", "attachment; filename=żółty.txt");

在此之后,文件被下载为“-óBty.txt”。如何解决这个问题?

编辑: 整个应用程序可以正常使用 UTF-8(例如 json 内容包含波兰语字符)。只有 http header 没有。

最佳答案

好的,我找到了解决方案。根据RFC 6266不应在 header 中使用非 ASCII 字符,而应使用 url 编码值。这种情况有特殊的语法:

String encodedFileName = URLEncoder.encode(file.getName(), "UTF-8");
response.header("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName);

关于java - Jersey ResponseBuilder 文件名编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30983809/

相关文章:

java - 井字棋 - 2D 阵列

hibernate - 如果父 pom 具有 Java EE BOM 依赖项,是否应该在子 pom 中显式提及所有依赖项?

java - 在 Java EE 6 中,如何以编程方式获取 JAX-RS 端点的 URL?

java - 如何显示时间表

php - 使用 PHP MySQL 查询在 XML RSS 提要中编码错误 "entity not defined"

php - 将特殊字符 ⓄⒼקร 写入/检索到数据库

java - 位摆弄 : Encoding Unsigned Primitives

java - Spring RestTemplate : How to reach state to check #is4xxClientError, 而不是 RestClientException 第一个?

java - 单击按钮滑动到下一个 fragment

php - Codeigniter 和字符集