我要把下面这句字符转换的话所表达的意思(即把ISO8859转换成GBK)写进过滤器里面去,我没有写过过滤器,我把字符转换的话与过滤器都复制到下面,请哪位可以帮我把它们写在一起再拼出来.---------------------------
     String a = new String(shouzhi.getBytes("ISO-8859-1"),"GBK");---------------------------
package common.cdt;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*; // For Date class
public class ReportFilter implements Filter 
{
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws ServletException, IOException 
      {
                   HttpServletRequest req = (HttpServletRequest)request;
//                     System.out.println(req.getRemoteHost() +
//                                    " tried to access " +
//                                    req.getRequestURL() +
//                                    " on " + new Date() + ".");
                     chain.doFilter(request,response);
      }  public void init(FilterConfig config)
      throws ServletException {
  }  public void destroy() {}
}

解决方案 »

  1.   

    Lz的方法可以解决这个问题,但如果想一劳永逸的方法还是写一个过滤器。参考这篇文章:
    http://www.blogjava.net/rickhunter/articles/33571.html
      

  2.   

    filter,转码或是重新编译tomcat都能解决问题,后两个也都算一劳永逸
      

  3.   

    这些方法都很麻烦,最简单的方法是在预处理的时候设置GB2312你后面的语言设置是比ActionForm的类获取页面相应信息的时间晚,所以那个时候设置语言代码也是没有用的!
      

  4.   

    http://www.blogjava.net/richardeee/archive/2007/01/23/Chinese_encoding_problem_for_all.html
      

  5.   

    这个问题太常见了,你在网上找找setCharaterEncode.java的过滤器的源代码,把它部署到你的项目中去即可
      

  6.   

    先写个过滤器类
    import javax.servlet.Filter;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.FilterChain;
    import java.io.*;
    import javax.servlet.*;public class FilterMain implements Filter{
      private FilterConfig fc;
      private String encoding;
      private boolean enable;  public FilterMain() {
      }  public void init(FilterConfig filterConfig) {
        this.fc = filterConfig;
        this.encoding = this.fc.getInitParameter("encoding");
        String able = this.fc.getInitParameter("enable");
        if(able.equalsIgnoreCase("true")){
          this.enable = true;
        }
      }  public void doFilter(ServletRequest servletRequest,
                           ServletResponse servletResponse, FilterChain filterChain) {
        if(this.enable){
        try {
          servletRequest.setCharacterEncoding(this.encoding);
        }
        catch (UnsupportedEncodingException ex) {
        }
        }
        try {
          filterChain.doFilter(servletRequest, servletResponse);
        }
        catch (ServletException ex1) {
        }
        catch (IOException ex1) {
        }
      }  public void destroy() {
      }
    }然后在Web.xml中添加以下代码
    <web-app>
      <filter>
        <filter-name>filtermain</filter-name>
        <filter-class>com.mlh.filtertest.FilterMain</filter-class>
        <init-param>
          <param-name>enable</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>gb2312</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>filtermain</filter-name>
        <url-pattern>/filterservlet</url-pattern>
      </filter-mapping>
    ....
    </web-app>
      

  7.   

    把这一句代码加上:
    <%@ page language="java" pageEncoding="GBK" %>