小方的Java博客

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            27 隨筆 :: 17 文章 :: 115 評論 :: 0 Trackbacks
          問題提出:看了不少文章處理中文,比如:在 jsp里寫
          //?傳統方式?
          <%@?page?contentType="text/html;?charset=gb2312"?%>?
          <html>?
          <body>?
          <form?method=post?action=test.jsp>?
          <input?type=text?name=your_name>?
          </form>?
          <%=?new?String(request.getParameter("your_name").getBytes("8859_1"),?"GB2312")?%>?
          </body>?
          </html>?

          //?新的方式?
          <%@?page?contentType="text/html;?charset=gb2312"?%>?
          <%?request.setCharacterEncoding("GB2312");?%>?
          <html>?
          <body>?
          <form?method=post?action=test.jsp>?
          <input?type=text?name=your_name>?
          </form>?
          <%=?request.getParameter("your_name")?%>?
          </body>?
          </html>?
          那是相當不好的方法,現在介紹一個朋友教我的方法:

          問題解決方法:
          步驟1:先寫一個servlet? EncodingFilter.java
          ?1import?javax.servlet.FilterChain;
          ?2import?javax.servlet.ServletRequest;
          ?3import?javax.servlet.ServletResponse;
          ?4import?java.io.IOException;
          ?5import?javax.servlet.Filter;
          ?6import?javax.servlet.http.HttpServletRequest;
          ?7import?javax.servlet.ServletException;
          ?8import?javax.servlet.FilterConfig;
          ?9
          10public?class?EncodingFilter?implements?Filter?{
          11
          12????private?String?targetEncoding?=?"gb2312";
          13????protected?FilterConfig?filterConfig;
          14
          15????public?void?init(FilterConfig?config)?throws?ServletException?{
          16????????this.filterConfig?=?config;
          17????}

          18
          19????public?void?doFilter(
          20????????ServletRequest?srequest,
          21????????ServletResponse?sresponse,
          22????????FilterChain?chain)
          23????????throws?IOException,?ServletException?{
          24
          25????????HttpServletRequest?request?=?(HttpServletRequest)?srequest;
          26????????request.setCharacterEncoding(targetEncoding);?//把請求用指定的方式編碼
          27????????//?把處理發送到下一個過濾器
          28????????chain.doFilter(srequest,?sresponse);
          29????}

          30
          31????public?void?destroy()?{
          32????????this.filterConfig?=?null;
          33????}

          34
          35????public?void?setFilterConfig(final?FilterConfig?filterConfig)?{
          36????????this.filterConfig?=?filterConfig;
          37????}

          38}

          39

          步驟2:在web.xml里這樣寫
          <filter>
          ????????
          <filter-name>EncodingFilter</filter-name>
          ????????
          <display-name>EncodingFilter</display-name>
          ????????
          <filter-class>com.itthinker.payroll.common.EncodingFilter</filter-class>
          ????
          </filter>
          ????
          <filter-mapping>
          ????????
          <filter-name>EncodingFilter</filter-name>
          ????????
          <url-pattern>/*</url-pattern>
          ????
          </filter-mapping>

          總結:
          這樣的話,任何映射地址全部會先加載EncodingFilter,中文處理就搞定了,不用那么麻煩在每個jsp文件寫那么多重復代碼了,很好地做到了,代碼可復用性。當然?page?contentType="text/html;?charset=gb2312"
          還是要的

          posted on 2006-06-08 17:44 方佳瑋 閱讀(502) 評論(4)  編輯  收藏 所屬分類: 其他技術

          評論

          # re: 什么才是最好處理中文方法 2006-06-08 21:02 thinkbase
          GB2312 已經過時來, 推薦了解一下什么叫做 UTF-8  回復  更多評論
            

          # re: 什么才是最好處理中文方法 2006-06-08 21:50 方佳瑋
          好的,謝謝,我是新手,成長中  回復  更多評論
            

          # re: 什么才是最好處理中文方法[未登錄] 2007-02-09 12:26 xmlspy
          還有一個重要的
          那個filter一定要在web.xml配置文件中第一位,否則...... 哈哈,你就折騰吧  回復  更多評論
            

          # re: 什么才是最好處理中文方法 2007-02-09 22:02 方佳瑋
          多謝樓上提醒  回復  更多評論
            

          主站蜘蛛池模板: 宽甸| 汶上县| 平邑县| 修水县| 阿拉尔市| 铜鼓县| 策勒县| 肇庆市| 大连市| 沙坪坝区| 本溪市| 桂平市| 泾阳县| 和硕县| 柳林县| 遂昌县| 定安县| 富顺县| 临湘市| 平凉市| 共和县| 淳化县| 鹤壁市| 岑溪市| 兰西县| 右玉县| 额敏县| 东平县| 调兵山市| 读书| 聂荣县| 江西省| 云龙县| 郎溪县| 景洪市| 新竹市| 潜山县| 松潘县| 华阴市| 黄大仙区| 林甸县|