相信大家用到文件上传时,用到SmartUpload包,总会有各种乱码问题,不管是文件名还是字符。
网上有很多方法。一开始是改字符集为GBK能解决一定的问题。
然后
直到一个大神的出现把SmartUpload的jar包改写完之后完美地解决了中文乱码问题。
参考:http://www.iteye.com/topic/243162
然而有时候却会出现包的一些引用错误,特别是自己改包的过程尤为复杂
利用JD-GUI和JCLASSLIB可以改掉字节码然后生成新的包。
参考:http://blog.youkuaiyun.com/hexin373/article/details/6669813
然后我发现,这样容易引起在封装jar包的时候出现各种各种的classpath错误,找不到符号等等
这里告诉大家一个最简单地方法:
1、在自己工程中创建jsp.smart.upload的包
2、用JD-GUI打开Class文件
3、把所有CLASS文件的代码复制过去
3、修改一些错误
如:
while (i < this.m_totalBytes) {
int j;//2、移动到这里
try {
this.m_request.getInputStream();
j = this.m_request.getInputStream().read(this.m_binArray, i,
this.m_totalBytes - i);
} catch (Exception localException) {
throw new SmartUploadException("Unable to upload.");
}
// int j;<---1、这是源代码,注释掉
i += j;
}
处理掉几个好像上面这样的问题的时候问题就解决了!
祝你幸福!