j2ee关于使用fileupload上传文件名称及内容乱码

本文探讨了在使用servlet + FileUpload实现fileupload模块时遇到的文件上传乱码问题。通过设置ServletFileUpload对象的setHeaderEncoding方法,解决了乱码现象。解释了此方法的作用以及不设置时如何导致乱码,并提供了修改jsp页面字符集的临时解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         在实验室帮小师妹实现一个fileupload的模块,由于简单没有使用框架,直接使用servlet+FileUpload这个第三方的库实现的,一切看似都没问题,但是发现上传的文件名称和内容有的时候是乱码,仔细查看了fileupload的javadoc,解决了问题,现写点心得体会。

        我的jsp页面是pageEncoding="utf-8",然后在windonws平台上写的程序,发现如果我没有设置ServletFileUpload对象的setHeaderEncoding()的这个方法的时候,我得到fileName的时候是乱码,设置了setHeaderEncoding("utf-8")问题解决。此外如果不设置setHeaderEncoding("utf-8"),把jsp页面改成gb2312也解决问题。问题虽然解决了,但是刨根问底了些是怎么回事,收获不小。原来setHeaderEncoding这个函数的意思就是在我们解析上传的数据的时候设置的解析字符集,如果不设置或者为Null的话,它会先找HttpServletRequest的characterEncoding,如果这个也没设置或者是null的话,它就使用平台自带的。我打印了我的这两个设置显示都是null,我的平台是windows则它就按照gbk的字符集解析了我的数据,自然就是乱码了,而我如果request或者servletUpload随便设置一个utf-8就没有问题了。而我如果改的是jsp,将它改成gb2312,则当request和servletUploader都是null的时候,以windows平台自带的gbk解析,则也误打误撞就不是乱码了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值