在做上传下载时使用了jspSmartUpload上传下载组件,获取表单的值如下:
String sofename=su.getRequest().getParameter("sofename");
String sofelanguage=su.getRequest().getParameter("sofelanguage");
String sofetype=su.getRequest().getParameter("sofetype");
String sofesize=su.getRequest().getParameter("sofesize");打印:
out.print(sofename);
out.print("<br>");
out.print(sofelanguage);
out.print("<br>");
out.print(sofetype);
out.print("<br>");
out.print(sofesize);如果表单的值有中文,打印时没问题,但是写进数据库时中文都成了乱码!!
用的数据库是MYSQL,数据库编码是GB2312;表单和获取表单页面也都是GB2312。
String sofename=su.getRequest().getParameter("sofename");
String sofelanguage=su.getRequest().getParameter("sofelanguage");
String sofetype=su.getRequest().getParameter("sofetype");
String sofesize=su.getRequest().getParameter("sofesize");打印:
out.print(sofename);
out.print("<br>");
out.print(sofelanguage);
out.print("<br>");
out.print(sofetype);
out.print("<br>");
out.print(sofesize);如果表单的值有中文,打印时没问题,但是写进数据库时中文都成了乱码!!
用的数据库是MYSQL,数据库编码是GB2312;表单和获取表单页面也都是GB2312。
String a=new String(request.getParameter("d").getBytes("ISO-8859-1"));这个就可以成功!
System.out.println(new String(str.getBytes("GBK"),"utf-8"));
System.out.println(new String(str.getBytes("GBK"),"GB2312"));
System.out.println(new String(str.getBytes("GBK"),"GBK"));
System.out.println(new String(str.getBytes("ISO8859_1"),"GBK"));
System.out.println(new String(str.getBytes("ISO8859_1"),"ISO8859_1"));
System.out.println(new String(str.getBytes("ISO8859_1"),"GB2312"));
System.out.println(new String(str.getBytes("ISO8859_1"),"utf-8"));
System.out.println(new String(str.getBytes("utf-8"),"GBK"));
System.out.println(new String(str.getBytes("utf-8"),"utf-8"));
System.out.println(new String(str.getBytes("utf-8"),"GB2312"));
System.out.println(new String(str.getBytes("utf-8"),"ISO8859_1"));
System.out.println(new String(str.getBytes("GB2312"),"GB2312"));
System.out.println(new String(str.getBytes("GB2312"),"ISO8859_1"));
System.out.println(new String(str.getBytes("GB2312"),"utf-8"));
System.out.println(new String(str.getBytes("GB2312"),"GBK"));出现中文的就是正确的编码
然后再相应的解决就可以
“这是由于jspsmartupload的编码问题,jspsmartupload开发的时候没有考虑到中文编码的问题,所以其混合参数不支持中文的提取,即使你su.getRequest().getParameter("sofename")用newByte转成"gb2312",你也看不到正常的中文,你可以上网搜搜这方面的文章,很多文章都有针对这方面的介绍,如果你用jspsmartupload的源代码,你也可以在其源代码中修改
”
我觉得应该是这个问题!!
String s11 = new String(m_binArray, m_startData, (m_endData - m_startData) + 1);
改为:
String s11 = new String(m_binArray, m_startData, (m_endData - m_startData) + 1,charset); 再用setCharset把charset设为GB2312就OK了。
[email protected]
也就一个文件,替换原先的smartupload.class就行了.再在页面里加一句:su.setCharset("GB2312")
[email protected]
具体方法名忘了。。你看一下就知道了。。很简单