SmartUpload中文乱码原因?
最近在做毕业设计,在做到文件上传的功能时,用到了SmartUpload,做到一半发现SmartUpload会出现上传文件时从前端获取的文件名,和文件路径中文会出现乱码问题。
经过网上查找相关资料发现,
- 当使用 SmartUpload 上传文件时且文件名含有中文时会出现乱码,但是这并不影响我们上传文件,因为我们上传到服务器之后的文件名一般都是我们自己取的,和客户端的文件名没有关系,所以这个乱码问题我也是到最后才发现,当我们在 SmartUpload 类的getDataHeader() 方法中将返回结果打印出来,上传”Java面试题.doc”的文档时,会输出 filename=“涓撳崠搴?doc””, 可以看出文件文发生了乱码。发生乱码的原因是 jsp文件采用的是 UTF-8的编码方式,为SmartUpload 的 m_response 的CharacterEncoding为ISO-8859-1。当我们在生成返回值字符串是为其指定编码方式为 UTF-8 时就不会出现乱码,即str = new String(this.m_binArray, i, j - i + 1,“UTF-8”)。
- 当使用 SmartUpload上传文件时,在form 表单里有一个text 的input时,text的值含有中文字符,在后台利 smartUpload.getRequest().getParameter(“name”)时也会出现乱码。这个问题比上个问题更纠结,因为查看源码之后发现jsp和SmartUpload 的Request的CharacterEncoding编码方式都是UTF-8,这样就无从下手了。
因为是SmartUpload的源码问题,因此我们从源码去解决。
通过修改源码,然后打包成jar包,最后导入依赖,删除原有的SmartUpload依赖的jar。就可以解决SmartUpload的中文问题了。
为了方便大家,请点击我的链接,下载压缩包后,导入依赖就可以了。