首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
renderFile下载文件中文乱码问题2
smileForLife
2019-11-13 13:22
就是这一行代码,如果文件名是中文,就会乱码,数字和英文就不会,这是FileRender类中的encodeFileName方法
项目:
JFinal
评论区
JFinal
2019-11-13 14:54
这行代码只是第一步,后面还有一些 if 判断,你需要继续往下调试,看到底是哪行代码出的问题
回复
smileForLife
2019-11-13 15:01
@JFinal
我确定就是这一行,因为该段代码返回的返回值就是最后乱码的结果
回复
JFinal
2019-11-13 15:03
@smileForLife
用的哪个版本的 jfinal ?
回复
smileForLife
2019-11-13 15:05
@JFinal
4.5
回复
JFinal
2019-11-13 15:19
@smileForLife
4.5 之前早就解决过中文下载文件名问题
我估计是你的中文文件名的使用的 encodeing 不是 UTF-8 造成的
你的项目配置的是什么 encoding,这个在 me.setEncoding(...) 中配置
此外,你还可以通过如下办法解决一下:
1:做一个 MyRender extends FileRender {...}
2:覆盖 public String encodeFileName(HttpServletRequest request, String fileName) 方法
在这个方法里头正确进行编码
3:然后这么来使用: render(new MyRender(fileName));
回复
smileForLife
2019-11-13 16:34
@JFinal
波总,实不相瞒,这些方法我都试过了,然后刚刚又去试了一遍,用 me.setEncoding("UTF-8")或者("GBK")都是没有作用的,复写下载出来了一个叫做repons.bin的文件............
回复
smileForLife
2019-11-13 16:35
@JFinal
搞了一天了这个问题......
回复
JFinal
2019-11-13 16:39
@smileForLife
下载文件为啥一定要使用中文名呢?
用上 render( oldFileName , 新名字) 这个方法,可以任意指定下载名称,不一定要是中文文件名
回复
JFinal
2019-11-13 16:40
这个问题我也觉得很奇怪,因为好几年前就解决过的中文文件名问题
可能是你的环境有所不同,客户端之类的可能不同
回复
smileForLife
2019-11-13 17:30
@JFinal
确实,我突然发现用浏览器下是ok的,之前使用的postman测的...
回复
smileForLife
2019-11-13 17:31
@JFinal
感谢波总
回复
年轻人
2020-03-25 17:51
我也遇到了,确实跟postman有关系,在postman下中文文件名有问题,浏览器下正常
回复
koushoha1893
2020-08-21 10:15
@JFinal
波总,自定义了一个MyFileRender,然后使用render(new MyFileRender()进行下载时,总是抛出异常RenderException,请问这是什么问题呢?
回复
JFinal
2020-08-21 10:33
@koushoha1893
根据异常提示的内容去解决,猜是不行的
回复
koushoha1893
2020-08-21 10:53
@JFinal
提示内容为:com.jfinal.render.RenderException: org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error 请波总指导下(顺便说一下,下载是正常的,只是有报错日志)
回复
发送
我要反馈
热门反馈
扫码入社