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

          主站蜘蛛池模板: 海兴县| 东乡县| 肃南| 大余县| 平乡县| 固始县| 马公市| 万州区| 柏乡县| 历史| 固原市| 嵩明县| 县级市| 黄平县| 镇平县| 石首市| 蛟河市| 扎鲁特旗| 岳普湖县| 庆阳市| 福泉市| 贡山| 高雄县| 广平县| 南昌市| 华阴市| 图片| 中阳县| 宁津县| 罗定市| 米脂县| 梨树县| 盘锦市| 兴山县| 通江县| 新郑市| 遵义县| 台山市| 曲阜市| 沈阳市| 瑞昌市|