regeister.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   <form action="userRegister" method="get">
            用户名字<input type="text" name="user.name"/><br/>
            邮箱账户<input type="text" name="user.email"/><br/>
            密码<input type="password" name="user.password"/><br/>
            确认密码<input type="password" name="password2"/><br/>
            <button type="submit" >提交</button>
   </form>
</body>
</html>然后我在】 userAction.java中总是接收到乱码
Component(value = "userAction")
public class UserAction extends ActionSupport {
private User user;
private UserManager userManager; @Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("user:" + user.getName()); //这里当然数据库也是乱码 // user.setName("随便");
userManager.add(user);
return super.execute();
} @Resource(name = "userManageImple")
public void setUserManage(UserManager userManage) {
this.userManager = userManage;
} public UserManager getUserManage() {
return userManager;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}}
无论我再web.xml添加<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>filter.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

还是spring得encodFilter都不行struct.xml
也添加啦<constant name="struts.i18n.encoding" value="UTF-8" /> 

解决方案 »

  1.   

    数据库中有乱码,是因为你的输入格式,和数据库默认的不一样。
    你可以先用String的一个方法试试,字符是什么格式
    String str = new String(bytes,"charset");
      

  2.   

    tomcat服务器的设定也需要设成相同格式
    URIEncoding=utf-8
    因为你用get的方式tomcat没设好会传乱码
      

  3.   

    pageEncoding ="GBK" 吧 
      

  4.   

    写个过滤器试试看:
    参考:public class CharacterEncodingFilter implements Filter { private String encoding; public void init(FilterConfig config) throws ServletException {
    encoding = config.getInitParameter("requestEncoding");
    if (encoding == null)
    encoding = "UTF-8";
    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain next) throws IOException, ServletException { if (null == request.getCharacterEncoding())
    request.setCharacterEncoding(encoding);
    response.setContentType("text/html; charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    next.doFilter(request, response);
    } public void destroy() {
    }}
      

  5.   

    你首先在web.xml中加上这段呢?<filter>
       <filter-name>encoding</filter-name>
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
      
      <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
      </init-param>  <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
      </init-param>
      </filter>
    然后,你再看看你的struts的包是哪个版本的,不会是2.1.6的吧,如果是这个版本的话,那相过滤器,本来就存在BUG,我今天刚好看视频,看到过,你再把过滤器的配置改一下,看改成这样行不行
     <filter>
       <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      </filter>
      
      <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern/*</url-pattern>
      </filter-mapping>
      
      

  6.   

    把 form 中的 action 改成 POST!!!!!URL 规范并不允许在 URL 参数中使用非 ASCII 字符!
      

  7.   

    要么按照2楼的说法,你将tomcat目录下的server.xml里面的修改8080端口处加上URIEncoding=utf-8
    要么你就按照7楼说的,将method改成post。
      

  8.   

    已经解决啦把mysql的设置为utf8就好啦我是重新装的