文件能请求但是代码下载报错

217 天前
 VersionGod1
各位大佬请问一个问题:
服务器上的中文文件名是 GBK 格式
我用 URLEncoder.encode(fileName, "GBK")转码了之后拼接前面的 url 。
在浏览器里可以直接访问这个拼接出来的 url ,但是我用 Hutool 的下载文件方法会报 404 是为什么 HttpUtil.downloadFileFromUrl(url, FileUtil.file(fileName));
1977 次点击
所在节点    Java
11 条回复
evan1
217 天前
先把文件名改成英文的 abc 确认下是不是编码问题。
VersionGod1
217 天前
英文的文件可以下载,已经试过了
ntedshen
217 天前
这都 2025 了怎么还有服务器用 gbk 文件名,就算能跑通在用户那边也得出乱码吧。。。
输出成十六进制然后对着码表看看到底出了个啥先。。。
CEBBCAT
217 天前
debug 或者利用代理服务器/抓包工具( Proxyman/Wireshark )看一下请求的是什么吧
twig
217 天前
URL 里面的 % 好像默认是 utf-8 。服务器接到请求之后,按 utf-8 解开,再去抓文件。服务器上用 GBK 编码文件名跟客户端没直接关系。(我依稀在哪看到过的,准确性不确定,不知道是不是有帮助。)
hcr707305003
217 天前
你通过 utf-8 连服务,查看文件名叫啥,指定是个乱码
VersionGod1
217 天前
@twig 我抓包试试看,如果是服务器接到请求之后,按 utf-8 解开,那在浏览器访问为什么可以成功呢。。。
VersionGod1
217 天前
@hcr707305003 是乱码,但是我改不了服务器的编码,只能通过 GBK 转码进行下载
twig
216 天前
我陷入了沉思
pocketz
216 天前
为啥不去 Hutool 里 debug
cheng6563
216 天前
服务器上文件名存储编码跟你调接口的编码没半毛钱关系。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1115836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX