大家都知道表单数据通过post 方式提交时,只要在页面的前面设置
<%
    request.setCharacterEncoding("GBK");
%>就可以了
但是如果用get提交的话,在提交到目标页面中通过取得参数之后,还需要用一个专门转换字符编码的方法处理
如changeTOGBK()之类的方法处理才行,如何写一个过滤器,使他通过对request和response的请求数据进行自动字符编码的转换呢?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【renwangxing】截止到2008-07-10 16:03:22的历史汇总数据(不包括此帖):
    发帖的总数量:56                       发帖的总分数:2900                     每贴平均分数:51                       
    回帖的总数量:64                       得分贴总数量:4                        回帖的得分率:6%                       
    结贴的总数量:35                       结贴的总分数:2480                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:21                       未结的总分数:420                      
    结贴的百分比:62.50 %               结分的百分比:85.52 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    你应该修改你的服务器设置,让他支持中文参数。比如Tomcat, http://www.java2000.net/viewthread.jsp?tid=4957
      

  3.   

    一。web.xml文件配置
    xml 代码   1. <filter>  
       2.    <filter-name>Filter User</filter-name>  
       3.   <filter-class>cn.lingqi.filter.LogonFilter</filter-class>  
       4.   <init-param>  
       5.    <param-name>encoding</param-name>  
       6.    <param-value>gb2312</param-value>  
       7.   </init-param>  
       8.   </filter>    
       9.    <!-- filter-mapping>  
      10.  <filter-name>Set Character Encoding</filter-name>  
      11.  <url-pattern>/servlet/*</url-pattern>    
      12.   </filter-mapping-->  
      13.   <filter-mapping>  
      14.  <filter-name>Filter User</filter-name>  
      15.  <url-pattern>/cggl/list_vender.jsp</url-pattern>    
      16.   </filter-mapping>  二。filter类使用举例
    java 代码   1. package cn.lingqi.filter;   
       2.   
       3. import java.io.IOException;   
       4. import java.io.PrintWriter;   
       5.   
       6. import javax.servlet.Filter;   
       7. import javax.servlet.FilterChain;   
       8. import javax.servlet.FilterConfig;   
       9. import javax.servlet.ServletException;   
      10. import javax.servlet.ServletRequest;   
      11. import javax.servlet.ServletResponse;   
      12. //用户登陆筛选器   
      13. public class LogonFilter implements Filter{   
      14.  protected FilterConfig filterConfig = null;   
      15.  protected String encoding = null;   
      16.  public void destroy() {   
      17.   // TODO Auto-generated method stub   
      18.      
      19.  }   
      20.   
      21.  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {   
      22.   response.setContentType("text/html;charset=gb2312");   
      23.   PrintWriter out = response.getWriter();   
      24.   if ((request.getCharacterEncoding() == null)) {   
      25.             String encoding = selectEncoding(request);   
      26.             if (encoding != null)   
      27.                 request.setCharacterEncoding(encoding);   
      28.         }   
      29.   out.println("<script>alert('test filter');</script>");   
      30.   chain.doFilter(request, response);   
      31.      
      32.  }   
      33.   
      34.  public void init(FilterConfig filterConfig) throws ServletException {   
      35.   this.filterConfig = filterConfig;   
      36.         this.encoding = filterConfig.getInitParameter("encoding");   
      37.  }   
      38.   
      39.   protected String selectEncoding(ServletRequest request) {   
      40.   
      41.          return (this.encoding);   
      42.   
      43.      }   
      44. }   
      45.