在jsp页面输入中文后提交至数据库后出现乱码。我用的是ssh框架,我在jsp页面获取数据库的中文数据后不是乱码啊,但是在jsp页面输入中文后就出现乱码了,也就是点提交后页面和数据库都是乱码。我把提交方式该为post后还是不行。我的jsp页面和数据库设置的都是utf-8。我用了filter,但是不行。我最初解决这个乱码问题是把涉及到的jsp页面都设置成gh2312。

解决方案 »

  1.   

    提交表单,交给另一个页面处理,获得提交过来的值处理之前加个
    <%request.setCharacterEncoding("gbk"); %>试试
      

  2.   

    String 数据名 = new String(request.getParameter("你提交数据的key名").getBytes("iso8859-1"),"gb2312或utf-8");
    然后将这个数据名传数据库
      

  3.   

    first.jsp----中
    <form action="second.jsp" method="post">
    <input type="text" id="username">
    <input type="password" id="pwd">
    <input type="submit" value="提交">
    </form>second.jsp----中
    <%request.setCharacterEncoding("gbk"); 
    String name=request.getParameter("username");
    String pwd=request.getParameter("pwd");
    out.print("用户名:"+name+"密码:"+pwd);
    %>
      

  4.   

    出现乱码主要原因是C—S信息传输时需要进行转码,而信息回来时又要按客户端和页面的设置来进行解码,所以只要你project、Server、ie使用统一的编码就不会有乱码现象。一般统一设为utf-8。
      

  5.   

    页面再多你总要处理这些数据吧吧。那就用jsp啊
    <jsp:useBean id="addnew" class="linkSql.NewsSql" scope="session"></jsp:useBean>
    <jsp:setProperty property="newstitile" name="addnew" param="newstitle"/>
    <jsp:setProperty property="newscontent" name="addnew" param="newscontent"/>
    这样就直接给java类中的 变量给值了啊
      

  6.   

    你的电脑是中文的环境,本地的输入字符时GBK的编码,你只要把Jsp文件的编码改为GBK就可以了。
      

  7.   

    楼主是用框架些的!还是用的servlet处理的!
    用servlet的话就应该在dopost方法中加入 public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException
    {
       request.setCharacterEncoding("utf-8");//主要是要加入这句话!
      

  8.   

    1、在JS里对中文参数进行两次转码
        var login_name = document.getElementById("loginname").value;    
        login_name = encodeURI(login_name);    
        login_name = encodeURI(login_name);    
    2、在服务器端对参数进行解码
        String loginName = ParamUtil.getString(request, "login_name");    
        loginName = java.net.URLDecoder.decode(loginName,"UTF-8");   不知道对你是否有用
      

  9.   

    敢问楼主你是用的mysql数据库吗?如果是http://wenku.baidu.com/view/51ec1cf7ba0d4a7302763a06.html 你先把你机器上的删干净 看例子装 关键一部就是安装时设置编码问题,乱码问题大多数是mysql数据库问题(使用mysql前提下)
      

  10.   

    一般页面传到后台是ISO8859-1,你可以强制转换(new String(request.getParameter("数据").getBytes("编码"))为GBK(系统编码)或UTF-8,储存时保证与数据库的编码一致。当然,数据库的编码尽量和后台编码一致,这样会减少好多麻烦。
      

  11.   

    你把提交的数据先转码
    String name = new String(request.getParameter("name ").getBytes("iso8859-1"),"gb2312"))
      

  12.   

    http://blog.csdn.net/heng_ji
    可能的情况比较多 给个网址自己去看下
      

  13.   

    http://blog.csdn.net/Heng_Ji/archive/2011/03/15/6250511.aspx
    是这个
      

  14.   

    用firebug 看看浏览器提交的请求头的编码是那种
      

  15.   

    String value= new String(request.getParameter("value").getBytes("iso8859-1"),"gb2312"))
    试试
      

  16.   

    敢间楼主数据库是utf-8,那提取的连接可是uft-8.并确定开启了 unicode
    jdbc:mysql://localhost:3306/database?useUnicode=true&amp;characterEncoding=UTF-8
      

  17.   

    顶下,post提交直接在action中的第一行写request.setCharacterEncoding("utf-8");
      

  18.   

    jsp URL里面 '?'后面带的参数 不能是中文 否则会乱码
         #14 的方法应该可以解决
    果是form 提交  
         设置统一的页面的编码格式 之后 应该也是没问题滴!
     
      

  19.   

    在spring的配置文件中,连接数据库的地方,比如下面的:
    <property name="url" value="jdbc:mysql://192.168.1.105:3306/digitalsf" />
    在后边加一段,变成
    <property name="url" value="jdbc:mysql://192.168.1.105:3306/digitalsf?useUnicode=true&amp;characterEncoding=UTF-8" />
    应该会有用
    我以前也是搞了很久,把所有可能要统一编码的地方都试了,但还是不行
    后来想想,就这个地方没设置了
      

  20.   

    楼主用的服务器是什么,可以考虑在服务器中添加编码转化
    tomcat下可以这样写
    <Connector port="80" protocol="HTTP/1.1" 
                   connectionTimeout="20000"  useBodyEncodingForURI="true"  uRIEncoding="UTF-8"
                   redirectPort="8443" />
      

  21.   

    导致乱码有很多解决办法:
    将编码格式全变成utf-8的;
    1.在接受的地方直接转变
      String test = new String(test.getBytes("ISO-8859-1"),"UTF-8");
    2.创建一个过滤器;
    3.在struts.xml中配置
      

  22.   

    我用的就是27楼的,我是几个人一起做,用的是tomcat如痛苦呀
      

  23.   

    1.首先保证页面和数据的编码设置一直,charSet="",pageEncodeing="";数据库那边:set names 'gbk';
    2.其次你在服务器端,写一个过滤器,设置下编码
    public class FilterEncoding implements Filter {
           private FilterConfig filterConfig=null;
           private String encoding=null;
           /* (non-Javadoc)        * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)        */
           public void init(FilterConfig filterConfig) throws ServletException {
                  this.filterConfig=filterConfig;
                  this.encoding=filterConfig.getInitParameter("encoding");       }
           /* (non-Javadoc)        * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)        */
           public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
                  String encoding=this.encoding;
                  if(encoding!=null)
                  {
                  request.setCharacterEncoding(encoding);  
                  }
                  chain.doFilter(request, response);
           }
           /* (non-Javadoc)        * @see javax.servlet.Filter#destroy()        */
           public void destroy() {
                  this.encoding=null;
                  this.filterConfig=null;
           }
    }3.再次我问下LZform表单中method是用的get还是post方法,若是用get的话,我建议使用post,若你还是想用get方法,那么你去tomcat目录下的server.xml文件中,<Connector URL="GBK" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>红色的部分为添加的。
      

  24.   

    楼主搞定没有啊 或者页面提交时  var s =  encodeURI(jsStr) String 数据名 = new String(request.getParameter("s").getBytes("iso8859-1"),'utf-8');楼主试试这个把  我之前给你说的tomcat下配置有没有做下啊  这样应该没问题了
      

  25.   

    是SSH框架的话,在struts.xml里面加上这句。package上面struts下面。
    <constant name="struts.i18n.encoding" value="gbk" />
    作用是:指定Web应用的默认编码集。对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。另外JSP的页面编码设置GBK。就OK了。我用SSH都这么处理乱码的,很好用。
      

  26.   

    String name = new String(request.getParameter("name ").getBytes("iso8859-1"),"gb2312"))
      

  27.   

    又是编码字符的问题,请统一你开发工具,代码模块的编码字符集,保证同在utf-8或GBK下
      

  28.   

    统一数据库中表字段的编码和页面中传输数据的编码格式:utf-8
      

  29.   

    <%request.setCharacterEncoding("utf-8"); %>
      

  30.   

    我和楼主一样,让我整了一天,String name = new String(request.getParameter("name ").getBytes("iso8859-1"),"gb2312"))
    这种方法也试过了还是不行,
    最后看来这个方法,在Struts配置文件<Struts></Struts>中加入<constant name="struts.i18n.encoding" value="gbk" />,就能正常显示了!