1 参考资料
A [url]http://hi.baidu.com/icelove0918/blog/item/d37a240645cae378020881b2.html [/url]
B
http://zhouwenjun.iteye.com/blog/542333
C
http://javay.iteye.com/blog/293409
D
http://blog.tianya.cn/blogger/post_show.asp?BlogID=769988&PostID=10095284
E
http://tanganping.iteye.com/blog/81615
2 原因:
JSP页面设置编码:
<%@ page language="java" pageEncoding="UTF-8"%>
使用smart-upload.jar上传后台后到中文值出现乱码,使用过滤器及设置转码也没效果,页面设置为GBK,GB2312提交后台中文显示正常,参考以下资料
总结如下:
使用jspsmart.jar要修改代码:由于各版本不同,修改也有所变化
A 第一种修改方式:
private String getDataHeader() {
int i = m_currentIndex;
int j = 0;
for (boolean flag1 = false; !flag1;)
if (m_binArray[m_currentIndex] == 13
&& m_binArray[m_currentIndex + 2] == 13) {
flag1 = true;
j = m_currentIndex - 1;
m_currentIndex = m_currentIndex + 2;
} else {
m_currentIndex++;
}
// 修改开始
String s = null;
try {
// 修改代码,首先得到响应的字符编码类型,然后对得到的字符串进行编码。
String encode = m_response.getCharacterEncoding();
if (encode.equalsIgnoreCase("UTF-8")) {
s = new String(m_binArray, i, (j - i) + 1, "UTF-8");
} else {
s = new String(m_binArray, i, (j - i) + 1);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 修改结束
return s;
}
B 第二种修改方式
反编译com.jspsmart.upload.SmartUpload,把SmartUpload.java中public void upload()的
String s9 = new String(m_binArray, m_startData, (m_endData - m_startData) + 1);
改为
String s9 = new String(m_binArray, m_startData, (m_endData - m_startData) + 1, "UTF-8");
重新编译后打包.
form中添加字符编码属性accept-charset="UTF-8"
有其它方式是已经打包好了.jar包,见附件.
3 我的处理方式
用smart-upload-src.rar中的源码可以解决乱码问题,但将之在myeclipse中使用自带的打包工具后使用时出现乱码