小方的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 方佳瑋 閱讀(491) 評論(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 方佳瑋
          多謝樓上提醒  回復  更多評論
            

          主站蜘蛛池模板: 隆尧县| 麻江县| 阜南县| 金湖县| 阿拉善右旗| 册亨县| 五指山市| 江孜县| 耿马| 尼玛县| 廉江市| 临邑县| 大连市| 凤山市| 米易县| 顺昌县| 呼图壁县| 吉安市| 贡觉县| 潍坊市| 瑞丽市| 宁安市| 青川县| 阿克苏市| 曲水县| 公主岭市| 汤阴县| 岗巴县| 墨江| 台东市| 四平市| 遂川县| 宜阳县| 巫山县| 柳州市| 株洲县| 株洲市| 繁昌县| 汾西县| 武威市| 舟曲县|