posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Web Project 3 亂碼解決方案小結

          Posted on 2007-05-15 19:38 ZelluX 閱讀(356) 評論(0)  編輯  收藏 所屬分類: OOP
          1. 數據庫亂碼
          使用EMS SQL Manager for MySQL可以容易地解決這個問題,在table的屬性對話框中將Character Set設為GBK即可。

          2. Ajax應用中Servlet返回內容亂碼
          設置響應報頭的編碼即可
          response.setHeader("Content-Type", "text/html;charset=GB2312");

          3. JSP頁面顯示亂碼
          在頁面開頭加上
          <%@ page pageEncoding="GBK"%>

          4. request.getParameter產生亂碼
          用post方法只要在獲取參數前設置編碼即可
          request.setCharacterEncoding("GBK");
          get方法還需要在獲取參數后轉換編碼
          name = new String(name.getBytes("ISO8859-1"), "GBK");

          5. google到的另一個解決方法,不過貌似不成功 -,-
          package filter;

          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;

          public class EncodingFilter implements Filter {
            
          protected FilterConfig filterConfig;

            
          protected String encodingName;

            
          protected boolean enable;

            
          public EncodingFilter() {
              
          this.encodingName = "UTF-8";
              
          this.enable = false;
            }


            
          public void init(FilterConfig filterConfig) throws ServletException {
              
          this.filterConfig = filterConfig;
              loadConfigParams();
            }


            
          private void loadConfigParams() {
              
          this.encodingName = this.filterConfig.getInitParameter("encoding");
              String strIgnoreFlag 
          = this.filterConfig.getInitParameter("enable");
              
          if (strIgnoreFlag.equalsIgnoreCase("true")) {
                
          this.enable = true;
              }
           else {
                
          this.enable = false;
              }

            }


            
          public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) 
          throws IOException, ServletException {
              
          if (this.enable) {
                request.setCharacterEncoding(
          this.encodingName);
              }

              chain.doFilter(request, response);
            }


            
          public void destroy() {
            }

          }
          web.xml
           <filter>
              
          <filter-name>EncodingFilter</filter-name>
              
          <filter-class>filter.EncodingFilter</filter-class>
              
          <init-param>
                
          <param-name>encoding</param-name>
                
          <param-value>UTF-8</param-value>
              
          </init-param>
              
          <init-param>
                
          <param-name>enable</param-name>
                
          <param-value>true</param-value>
              
          </init-param>
            
          </filter>
            
          <filter-mapping>
              
          <filter-name>EncodingFilter</filter-name>
              
          <url-pattern>/user/*</url-pattern>
            
          </filter-mapping>
            
          <filter-mapping>
              
          <filter-name>EncodingFilter</filter-name>
              
          <url-pattern>/manager/*</url-pattern>
            
          </filter-mapping>  
            
          主站蜘蛛池模板: 玉树县| 徐闻县| 绵竹市| 仙居县| 南投市| 塔河县| 崇义县| 福鼎市| 姜堰市| 达尔| 汽车| 宜宾市| 峡江县| 临夏市| 封丘县| 灵寿县| 溆浦县| 邯郸县| 霍山县| 鲜城| 章丘市| 社会| 阿拉善盟| 来宾市| 赫章县| 金沙县| 汉沽区| 左云县| 宝坻区| 大同县| 富川| 若羌县| 囊谦县| 昭平县| 漯河市| 镇江市| 微博| 施秉县| 丽水市| 河北省| 仙桃市|