java - 下载时加密的文件名,而不是预期的语言,即阿拉伯语

标签 java arabic urlencode content-disposition response-headers

我正在尝试下载名称为阿拉伯语的文件。文件内容为阿拉伯语,但名称在下载时已加密。

responseBuilder.header("Content-Disposition",
                                "attachment; filename=\"" + fileName + "\"; filename*=utf-8''" + URLEncoder
                                        .encode(fileName, "UTF-8"));

此时的文件名是阿拉伯语,但在浏览器的响应中, header 文件名更改为其他内容,例如 E1-(E1-(.txt

HTTP 响应头:

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 10
Content-encoding: gzip
Connection: keep-alive
Cache-Control: private
Content-Disposition: attachment; filename="E1-(E1-(.txt.txt"; 
filename*=utf-8''%D9%85%D8%B1%D8%AD%D8%A8%D8%A7.txt
Expires: Mon, 26 Jul 1997 05:00:00 GMT
X-Backend: supra-prod-pdx-ff4d74bff-7srf7
X-Content-Type-Options: nosniff
X-Robots-Tag: noindex
X-Slack-Meta: proxy

提前谢谢你。

最佳答案

好的,所以在 UI 端可以实现这一点。

在 Response Header 中,fileName* 提供编码值,并在 UI 端使用以下 JS 方法解码该值: 从字符串中删除 utf8'',这样您将获得实际的文件名。

window.decodeURIComponent(t.substring(t.lastIndexOf('\'')+1,t.length));

关于java - 下载时加密的文件名,而不是预期的语言,即阿拉伯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58551710/

相关文章:

Java:将 put() 与对象列表同步

java - 如何使用 Netbeans 和 Maven 将 Web 片段打包到 jar 中

c++ - 从 Windows 上的控制台应用程序获取 C++ 中的阿拉伯字符输入

php - URL Percent 只对 PHP 中的查询进行编码,就像在 Swift 中一样

ios - 如何在urlRequest中向httpBody添加urlencoded参数

javascript - 要求对fixedEncodeURIComponent 进行解释

java - Jersey Spring Maven java.lang.NoClassDefFoundError : org/glassfish/jersey/hk2/HK2InjectionManager

java - Java中阿拉伯标点符号的匹配

php - 为什么 MySQL 在 PHP 中不返回具有正确字符集的阿拉伯列?

java - ByteArrayInputStream 堆内存不足