我做了一个ssh项目,由于疏忽,项目中js,jsp,java文件都用了不同的编码,有utf-8,gbk,iso8859-1,在自己的机子上项目做完了都没发现乱码问题,到了别的机子上就有了,经理让我把他编码统一成gbk。。我试过把其他格式的文件内容拷出来,然后删除旧的文件,新建一个同名的文件,设置编码为gbk,然后复制回内容,测试发现jsp填写的内容到了action就乱码了,搞了过滤器还是不行,怎么办?我在action加request.setCharacterEncoding("gbk"); 
  response.setCharacterEncoding("gbk");还是不行

解决方案 »

  1.   

    项目--》properties----》设置编码为gbk。在web。xml中添加编码的过滤器<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GBK</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>这样就该好了吧。
      

  2.   

    提交的jsp页面内容前都加上<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    如果spring的过滤器不行,建议你自己写个过滤器类
      

  3.   


    public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig;
    protected String encodingName;
    protected boolean enable; public SetCharacterEncodingFilter() {
    encodingName = "GBK";
    enable = false;
    } // 初始化
    public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    } // 每个请求设置
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("GBK");
            response.setCharacterEncoding("GBK");
      chain.doFilter(request, response); } public void destroy() {
    }
    }
    <filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>
    tools.SetCharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>
    </init-param>
    </filter>
        
    <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>你看我的过滤器有什么问题吗?
    我测试过,他每次请求都进来的,乱码问题还是没解决
      

  4.   

    写一个类继承Struts的核心类(requestprocess类),重写process()方法,在方法里面设置编码格式:
    request.setCharacterEncoding("gbk"); 
    response.setCharacterEncoding("gbk");
    之后在Struts配置文件里配置<controll processclass="...."/>
    应该就可以了,,,
      

  5.   


    可是我已经写了一个<controller processorClass="org.springframework.web.struts.AutowiringRequestProcessor"></controller>
    再写一个控制器,会报错的。。怎么办
      

  6.   

    要不就试试
    1、把所有文件不管是js,jsp,java都用记事本打开,复制到一个新建的文件中。
    2、form用post
    我以前改过我的myeclipse的编码设置,结果我的工程拷到别人的机子上之后,汉字都乱码了,中能一个个的文件用记事本打开再覆盖了。也是很麻烦的。