`
Teok
  • 浏览: 148506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jUpload字符集设置

阅读更多
今天学习jUpload(一个applet文件上传组件,详见www.sourceforge.net/jupload)的时候,发现上传后的中文文件名都成了乱码,文件内容并没有问题,查了一下jUpload的doc,上面说设置文件名编码的参数filenameEncoding自从3.3.0版本后不再使用了,我跟了下代码,文件名在服务器servlet处就已经乱了。google一下这个问题,原来只要将在servlet中对commons.fileupload对象调用一次如下方法:
upload.setHeaderEncoding("UTF-8");


然后中文乱问题解决了,顺便看了一下fileupload的api,其原文如下:
引用

public void setHeaderEncoding(java.lang.String encoding)
Specifies the character encoding to be used when reading the headers of individual part. When not specified, or null, the request encoding is used. If that is also not specified, or null, the platform default encoding is used.
Parameters:
encoding - The encoding used to read part headers.

最后一句表明,这个编码设置会用于读取header信息,而jUpload正是将文件名以及文件分割数等信息放在header中,所以头信息的读取是否正确决定文件名编码正确与否。
既然如此,我猜可能是jUpload的http请求并未给request设置编码方式,结果也是如此。

当使用ftp协议上传的时候,又出现了乱码,处理方式和上面的基本相同:
我在FileUploadThreadFTP类的beforeRequest()方法里加入了一句:
ftp.setControlEncoding("GBK");

这样ftp模式下就不会出现乱码。注:当commons.net.ftp初始化一个ftpClient的时候它的默认编码是iso-8859-1.

做完ftp编码的改动之后需要将jUpload重新打包.另外参照jUpload的readme来使用ftp协议传输文件的时候,需要将commons-net,commons-oro这俩包放在jUpload jar的同级目录下,它的ftp实现是基于这两个包的。
发张截图,欢迎有兴趣的朋友一起研究这个组件:
分享到:
评论
1 楼 aigyoo 2012-09-14  
很有兴趣就是不知道怎么做

相关推荐

Global site tag (gtag.js) - Google Analytics