表单将中文用户名”小刘“(页面编码已经是utf-8),提交到action里,判断是否存在该用户。
即:public String login() throws Exception {
System.out.println(username);//该处输出到console的也不是乱码
 this.context = ActionContext.getContext();
 //this.request = (Map)this.context.get("request");
 this.session = this.context.getSession();
 username = username.trim();
 password = password.trim();
//username = new String(username.trim().getBytes("ISO-8859-1"),"utf-8");
//password = new String(password.trim().getBytes("ISO-8859-1"),"utf-8");

if("小刘".equals(username) && "123".equals(password)) {//感觉是这边的问题???

//request.put(username, "admin");
//request.put(password, "123");
session.put("username", "小刘");
session.put("password", "123");
return SUCCESS;
}
  
return LOGIN;
}若改为英文的用户,执行时正确的。请大家帮忙解决一下

解决方案 »

  1.   

    写个过滤器,将所有请求的编码设置为utf-8public void doFilter(...){
    HttpServletRequest req = (HttpServletRequest) request;
    req.setCharacterEncoding("UTF-8");//应根据你使用的编码替换UTF-8
    filterchain.doFilter(request, response);
    }
      

  2.   

    System.out.println(username);//该处输出到console的也不是乱码
    debug调试看看是哪的问题
      

  3.   

    在web.xml中配置一个过滤器将所有的文件都转换为uft-8
      

  4.   

    网页多的情况下写个过滤器,少的话加
     response.setCharacterEncoding("text/html;charset=utf-8");
     request.setCharacterEncoding("utf-8");
      

  5.   

    这个我也遇到了通过post传递不会出现乱码,通过个get会出现乱码,如果要用get方法则可以通过修改tomcat下的server.xml,再加过滤器保证搞定,只有过滤器是不行的仍然会出现乱码,serve.xml具体修改如下    <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443"/>                    修改为: <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="GBK"/>,保证搞定