在做上传下载时使用了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。

解决方案 »

  1.   

    这是由于jspsmartupload的编码问题,jspsmartupload开发的时候没有考虑到中文编码的问题,所以其混合参数不支持中文的提取,即使你su.getRequest().getParameter("sofename")用newByte转成"gb2312",你也看不到正常的中文,你可以上网搜搜这方面的文章,很多文章都有针对这方面的介绍,如果你用jspsmartupload的源代码,你也可以在其源代码中修改
      

  2.   

    String sofetype=new String(su.getRequest().getParameter("sofetype").getBytes("ISO-8859-1"));你试试!
    String a=new String(request.getParameter("d").getBytes("ISO-8859-1"));这个就可以成功!
      

  3.   

    这是我在解决 struts 中文乱码问题时 发现的一个简单方便的方法 我相信大家一看就明白System.out.println(new String(str.getBytes("GBK"),"ISO8859_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"));出现中文的就是正确的编码
    然后再相应的解决就可以
      

  4.   

    几位不知道做过上传下载没有 :
    “这是由于jspsmartupload的编码问题,jspsmartupload开发的时候没有考虑到中文编码的问题,所以其混合参数不支持中文的提取,即使你su.getRequest().getParameter("sofename")用newByte转成"gb2312",你也看不到正常的中文,你可以上网搜搜这方面的文章,很多文章都有针对这方面的介绍,如果你用jspsmartupload的源代码,你也可以在其源代码中修改

    我觉得应该是这个问题!!
      

  5.   

    呵呵,我昨天刚刚解决了这个问题,今天就有人问。因为JSPSMART用的编码是UTF-8,你这里用GB2312,当然不行。在页面里转码也没有用,需要修改smartupload.java源代码,将SmartUpload.java下的public void upload()方法中的一行:
    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了。
      

  6.   

    大哥能将你的JSPSMART组件发给我吗??
    [email protected]
      

  7.   

    好啊,晚上回去发给你.要源代码还是目标代码?
    也就一个文件,替换原先的smartupload.class就行了.再在页面里加一句:su.setCharset("GB2312")
      

  8.   

    就按照nlysailor() 说的,可以解决。恰好一个朋友也遇到这个问题。我们弄了好办天,呵呵,才弄出来。要在这里看看就不用浪费那么时间了.JSPSMART组件网上很容易找到的。
      

  9.   

    不行 编译说找不到charset 改了之后Tomcat也运行不了
      

  10.   

    上网下载个支持中文化的JSPSMARTUPLOAD,我上次看到有人做过这个方面的改进,
      

  11.   

    把改过的目标代码给我一份吧,这个问题也是还没有解决
    [email protected]
      

  12.   

    让request和respone都.一下那个setA|| senA那个方法里面写UTF-8就可以了。
    具体方法名忘了。。你看一下就知道了。。很简单
      

  13.   

    你把编码用UTF-8,基本上很好碰到乱码问题
      

  14.   

    你把编码用UTF-8,很少碰到乱码问题
      

  15.   

    charset是自己定义的,包括setCharset方法。另外,即使这两个问题没有,可能还会碰到一个File问题,要修改的不止一处。我已经把文件发到[email protected]了。