request.setCharacterEncoding()只能解决post方式提交的中文数据,而get方法好象我如何该都是乱码,后来改了server.xml里的URLEncoding属性后才好,请问可以有别的办法可以解决get参数的乱吗问题吗?另外谁有关于乱码的好文章,请贴出来,在此先谢谢了!

解决方案 »

  1.   

    加个过滤器filter
    package asatapp;import javax.servlet.Filter;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.FilterChain;
    import java.io.IOException;
    import javax.servlet.http.*;public class EncodingFilter implements Filter {
    private String encoding;
    public EncodingFilter() {
    }
    public void init(FilterConfig fconfig) throws ServletException {
    encoding=fconfig.getInitParameter("charset");
    }
    public void doFilter(ServletRequest req, ServletResponse resp,FilterChain fchain) throws IOException,
    ServletException
    {
    HttpServletRequest request=(HttpServletRequest)req;
    request.setCharacterEncoding(encoding);
    fchain.doFilter(req,resp);
    }
    public void destroy() {
    }
    }
    WEB.XML中
      <filter>
        <filter-name>encoding</filter-name>
        <filter-class>asatapp.EncodingFilter</filter-class>
        <init-param>
          <param-name>charset</param-name>
          <param-value>gb2312</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    你上网查filter用法就行
      

  2.   

    看什么版本的tomcat 如果是5 以前的只要用filter就可以,如上即可
    如果是5 以后的 则需要修改tomcat配置文件server.xml<Connector 
    port="80"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   debug="0" connectionTimeout="20000" 
                   disableUploadTimeout="true" 
                   URIEncoding="UTF-8"
    />这里的UTF-8 根据你的情况自己选择合适的字符集
      

  3.   

    public String toGBK(String str){
          try {
             byte bt[] = str.getBytes("ISO-8859-1");
             str = new String(bt);
          } catch (Exception ex) {
          }
          return str;
    }
    //调这个函数就可以了