今天学习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实现是基于这两个包的。
发张截图,欢迎有兴趣的朋友一起研究这个组件:
分享到:
相关推荐
mysql数据库,表 ,字段的字符集设置
oracle 字符集设置设置环境变量修改Oracle客户端字符集
linux 下的 oracle 导入数据库时出现中文乱码,通过修改字符集格式,修改成支持中文的格式。简单易操作。
Eclipse和MyEclipse的字符集设置.docx
oracle 字符集修改命令oracle 字符集修改命令oracle 字符集修改命令oracle 字符集修改命令
香港增补字符集香港增补字符集香港增补字符集香港增补字符集[参照].pdf
Oracle 修改字符集Oracle 修改字符集Oracle 修改字符集
而由字符组成的集合则成为字符集,字符集由于包含字符的多少与异同而形成了各种不同的字符集。我们知道,所有字符在计算机中都是以二进制来存储的。那么一个字符究竟由多少个二进制位来表示呢?这就涉及到字符编码的...
SQL SERVER 字符集问题之一解决指南 在使用 SQL SERVER 时,字符集问题是一个常见的问题之一。在本文中,我们将讨论 SQL SERVER 字符集问题之一解决方案,解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_...
Oracle数据库安装后,PL/SQL查询出数据中英文乱码,可以通过调整环境变量等方式修改。
Sybase安装+字符集设置+连接池设置+卸载
oracle字符集的查看,oracle客户端字符集的修改
字符集与字符集编码简介 我们知道,计算机只能识别诸如0101这样的二进制数,于是人们必须以二进制数据与计算机进行交互,或者先将人类使用的字符按一定规则转换为二进制数。 那什么是字符呢?在计算机领域,我们把...
重启 MySQL 服务后,可以使用以下命令查看字符集设置: mysql> show variables like 'collation_%'; mysql> show variables like 'character_set_%'; 这将显示当前 MySQL 数据库的字符集信息。 总结 MySQL 字符...
Mysql字符集设置原理及常见问题解决
设置mysql字符集 mysql 乱码
//总共:3个字符集(12*12、16*16和24*24),用户可以自行新增其他分辨率的字符集。 //每个字符所占用的字节数为:(size/8+((size%8)?1:0))*(size/2),其中size:是字库生成时的点阵大小(12/16/24...)
oracle11g 修改字符集 修改为ZHS16GBK 有时候因为数据库的字符集的问题,导致dmp文件不能正常导入到其他数据库。可以用下面的方法将数据库的字符集修改一下
字符集转换_SAP字符集转换_SAP字符集转换_SAP
支持包安装成功后,转换工具 (gbunicnv.exe) 和微软4字节字符集编码支持包 (ms4bsp.dll) 会被安装在系统的 Program Files\GB18030Tools 文件夹下。用户可通过 Windows 2000 中的中文内码(Unicode) 输入法输入所需的 ...