jsp页面用文本框传递中文用户名到ActionForm再传到Action中但是action得到的是乱码,以前用Struts+Hibernate的时候没有乱码问题,然后我又添加了一个Spring框架,action由Spring管理,出现了乱码问题,有没有个一劳永逸的办法,整个项目都不会再出现乱码问题了?

解决方案 »

  1.   

    使用FILTER,请求来到的时候把encoding转一下,在到action做业务处理
      

  2.   

    那字符集该用哪个???比如说页面、过滤器、action,等等?
      

  3.   

    页面上的字符集用什么就设成什么
    例如:页面上是utf-8,响应的时候就设成utf-8
    编码不一样的时候为出现乱码
      

  4.   

    直接写一个过滤器,啥乱码都解决了java类的代码
    package com.lore.filter;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;/*
     * 此过滤器用于设置支持系统的中文编码,为了支持用户的中文输入
     * **/public class EncodingFilter implements Filter {
    private FilterConfig filterconfig;
    private String encoding = null; public void destroy() { } public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    if (arg0.getCharacterEncoding() == null) { String encod = this.getEncoding();
    if (encod != null) {
    arg0.setCharacterEncoding(encod); }
    }
    arg1.setCharacterEncoding(encoding);
    arg2.doFilter(arg0, arg1); } public void init(FilterConfig arg0) throws ServletException {
    this.filterconfig = arg0;
    this.encoding = this.filterconfig.getInitParameter("encoding"); } public String getEncoding() {
    return this.encoding;
    }}
    web.xml配置文件的代码
    <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>com.lore.filter.EncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GB2312</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    你可以试试,应该有这个过滤器,就没有乱码问题了
      

  5.   

    spring 本来就有一个过滤器  你要在web。xml配置啊   就可以搞到啊
      

  6.   


    <filter>
    <filter-name>encodingFilter</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><filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>web.xml配置以上代码,所有编码都使用UTF-8,包括项目编码,JSP文件,配置文件等,绝对不会有乱码问题。
      

  7.   

    建议使用spring自带的过滤器 你要在web。xml配置下就可以了,代码如下:
      <!-- spring自带的字符集处理filter --> <filter>
    <filter-name>ChinaFiler</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>/*红色部分的编码方式随你,可以是GBK也可以是UTF-8关键在于你自己的设置*/</init-param>
    </filter><filter-mapping>
    <filter-name>ChinaFiler</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  8.   

    好了,用的Spring过滤器,不好意思分不多