求struts乱码解决方案!

解决方案 »

  1.   

    用一下filter啦public class SetCharacterEncodingFilter implements Filter { protected String encoding = null;
    protected String igno = null; protected FilterConfig filterConfig = null; protected boolean ignore = true;
    public void destroy() {
    this.encoding = null;
    this.filterConfig = null;
    }
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest rq=(HttpServletRequest) request;
    RequestDispatcher rd = rq.getRequestDispatcher("/");
    if(!rq.getRequestURI().equals("/")&&!rq.getRequestURI().equals("/perso.do")&&rq.getSession().getAttribute("diquid")==null){
    rq.setAttribute("msg", "超时,请重新登录");
    rd.forward(request, response);
    }

    if (ignore || (request.getCharacterEncoding() == null)) {
    String encoding = selectEncoding(request);
    if (encoding != null) {
    request.setCharacterEncoding(encoding);
    }
    }
    chain.doFilter(request, response);
    }web.xml   <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>util.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>ignore</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>20分太少了
      

  2.   

    我自己总结的表单传值
    post方法传值:
            request.setCharacterEncoding("gbk")
    get方法传值:
            new String(request.getParameter("参数名").getBytes("iso-8859-1"))地址传值跟表单get方法传值一样
            new String(request.getParameter("参数名").getBytes("iso-8859-1"))get方法传值和地址传值都是通过在项目中编码解决乱码问题,可以在配置文件中设置编码,这样就可以不用在项目中编码来解决了。
    在Tomcat 6.0\conf\server.xml文件中改,如下是改好的节点,主要添加URIEncoding="gbk"属性
    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>
    注意:修改配置文件解决不了post方法传值的乱码问题。
    <jsp:param>动作传值
            传值的时候先编码:
                    <jsp:param name="name" value="<%=java.net.URLEncoder.encode("中文信息","gbk") %>"/>
            得值的时候再解码:
                    <%=java.net.URLDecoder.decode(request.getParameter("name")) %>
    上面这个解决乱码例子后来发现可以用request.setCharacterEncoding("gbk")这个来解决。总结:乱码解决的时候要注意乱码之前是什么码转什么码,然后根据了解到的再去转
    例如:GBK - ISO-8859-1 - UTF-8 现在的码是UTF-8,然后转回GBK的话,要注意一步一步转回去。
      

  3.   

    这些都不得行呢??jsp可以filter 过滤器搞  可是struts他好像例外了,不得行。我也想到了从页面中接收到参数,然后修改该参数的字符集,我一修改,struts就不能运行了,系统报出了一个异常