今天做了个文件下载功能,Jersey实现,但是下载下来的文件名不正常,在有中文字的时候,中文字是空白,不显示,如下:
服务器端的文件名是正常的:
下载打开的时候中文字就没了:
观察一下HTTP响应,文件名中的中文字确实被处理掉了:
后台代码:
return Response
.ok(file, mt)
.header("Content-disposition","attachment;filename=" + fileName)
.header("", "")
.build();
原因应该就是后台返回的时候把中文字处理掉了。
解决方法:在后台对文件名进行编码:
fileName2 = URLEncoder.encode(fileName, "UTF-8");
当然,有报错提示的,UnsupportedEncodingException,要try catch处理一下。
问题解决!