我用的是myeclise5.5+tomcat5.0
一个servlet实例程序的组成如下:
html文件:<meta http-equiv="content-type" content="text/html; charset=GBK">
...
<body>
    This is my HTML page. <br>
    <form action="./FormServlet" method="Get">
    Get:<input name="username">
    <input type="submit">
    </form>
</body>
....
servlet文件:FormServlet。java:public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println("  <BODY>");
out.print("    您输入的用户名是:\n");
String username=request.getParameter("username");
username=new String(username.getBytes("ISO8859-1"),"GBK");
out.print(username);
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}server.xml:
    <Connector 
port="8080"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" URIEncoding="GBK"
/>
IE里面运行结果总是这样的乱码:您输入的用户名是: ??? 
谢谢指导!!

解决方案 »

  1.   

    用filter 解决乱码
       1.  <filter>  
       2.         <filter-name>EncodingFilter</filter-name>  
       3.         <filter-class>com.kenshin.base.SysFilter</filter-class>  
       4.         <init-param>  
       5.             <param-name>encoding</param-name>  
       6.             <param-value>UTF-8</param-value>  
       7.         </init-param>  
       8.         <init-param>  
       9.             <param-name>enable</param-name>  
      10.             <param-value>true</param-value>  
      11.         </init-param>  
      12.     </filter>  
      13.     <filter-mapping>  
      14.         <filter-name>EncodingFilter</filter-name>  
      15.         <url-pattern>*.do</url-pattern>  
      16.     </filter-mapping>    1.  package com.kenshin.base;   
       2.   
       3. import java.io.IOException;   
       4.   
       5. import javax.servlet.Filter;   
       6. import javax.servlet.FilterChain;   
       7. import javax.servlet.FilterConfig;   
       8. import javax.servlet.ServletException;   
       9. import javax.servlet.ServletRequest;   
      10. import javax.servlet.ServletResponse;   
      11.   
      12. import org.apache.commons.logging.Log;   
      13. import org.apache.commons.logging.LogFactory;   
      14. import org.hibernate.Session;   
      15. import org.hibernate.SessionFactory;   
      16. import org.hibernate.Transaction;   
      17.   
      18. public class SysFilter implements Filter {   
      19.     protected String sEncodingName;   
      20.   
      21.     protected FilterConfig sysFilter;   
      22.   
      23.     protected boolean bEnable;   
      24.   
      25.     protected Log logger = LogFactory.getLog(SysFilter.class);   
      26.   
      27.     public void destroy() {   
      28.   
      29.     }   
      30.   
      31.     public void doFilter(ServletRequest arg0, ServletResponse arg1,   
      32.             FilterChain arg2) throws IOException, ServletException {   
      33.         // TODO Auto-generated method stub   
      34.         if (this.bEnable) {   
      35.             try {     
      36.                 arg0.setCharacterEncoding(this.sEncodingName);   
      37.                 arg1.setContentType("text/html;charset=" + this.sEncodingName);   
      38.                 arg1.setCharacterEncoding(this.sEncodingName);   
      39.                 arg2.doFilter(arg0, arg1);   
      40.   
      41.             } catch (Exception e) {   
      42.                 logger.info("出错了");   
      43.             }   
      44.             // session.close();   
      45.         } else {   
      46.             arg2.doFilter(arg0, arg1);   
      47.         }   
      48.     }   
      49.   
      50.     public void init(FilterConfig arg0) throws ServletException {   
      51.         // TODO Auto-generated method stub   
      52.         this.sysFilter = arg0;   
      53.         this.loadFilterSetting();   
      54.     }   
      55.   
      56.     private void loadFilterSetting() {   
      57.         this.sEncodingName = this.sysFilter.getInitParameter("encoding");   
      58.         logger.info("encoding:" + sEncodingName);   
      59.         String sEnable = this.sysFilter.getInitParameter("enable");   
      60.         if (sEnable != null && sEnable.equalsIgnoreCase("true")) {   
      61.             this.bEnable = true;   
      62.         } else {   
      63.             this.bEnable = false;   
      64.         }   
      65.     }   
      66.   
      67.   
      68. }   
     
      

  2.   

    我就想知道get方法下怎么解决乱码问题,filter是不是太麻烦了?