现在的位置: 首页 > 综合 > 正文

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

2019年04月01日 ⁄ 综合 ⁄ 共 719字 ⁄ 字号 评论关闭

         在实验室帮小师妹实现一个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解析,则也误打误撞就不是乱码了。

抱歉!评论已关闭.