瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          tomcat 編碼問題

          Posted on 2007-09-24 20:02 瘋狂 閱讀(1932) 評論(1)  編輯  收藏 所屬分類: web
          當在做程序的是你也許會遇到一些很讓你惱火的亂碼問題,就是在你在頁面傳參數或向數據庫里插入數據或去值的時候會出現亂碼的問題,其實有很多解決辦法比如:添加request.setCharacterEncoding("GB18030");或在取值的時候用String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");等 但有時仍然會遇到一些問題:
          針對get方式(也就是鏈接的方式)除了使用String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");最好的方式就是在tomcat的配置文件server.xml相應端口的節點里面加上URIEncoding='utf-8'.
          針對post方式建議使用fliter解決,注意:
          這種方式只對post方式有效果 get方式用上面的方法在tomcat里面配置
          首先:定義一個類CharsetEncodingFilter讓它實現javax.servlet.Filter接口
            然后在配置文件web.xml里添加: (請注意,過濾是在serlvet規范2.3版中初次引入的。因此,web.xml文件必須使用DTD的2.3版本。)
           <filter>

               
          <filter-name>CharsetEncodingFilter</filter-name>

               
          <filter-class>com.util.filter.CharsetEncodingFilter</filter-class>//class必須是完整路徑

               
          <init-param>

                      
          <param-name>encoding</param-name>

                      
          <param-value>GB18030</param-value>

               
          </init-param>

           
          </filter>

           
          <filter-mapping>

               
          <filter-name>CharsetEncodingFilter</filter-name>

               
          <url-pattern>*.jsp</url-pattern>
          </filter-mapping>//表示對所有jsp文件有效


          filter元素位于部署描述符文件(web.xml)的前部,所有filter-mapping、servlet或servlet-mapping元素之前。filter元素具有如下六個可能的子元素:
           icon  這是一個可選的元素,它聲明IDE能夠使用的一個圖象文件。
           filter-name  這是一個必需的元素,它給過濾器分配一個選定的名字。
           display-name  這是一個可選的元素,它給出IDE使用的短名稱。
           description  這也是一個可選的元素,它給出IDE的信息,提供文本文檔。
           filter-class  這是一個必需的元素,它指定過濾器實現類的完全限定名。
           init-param  這是一個可選的元素,它定義可利用FilterConfig的getInitParameter方法讀
          --------------------
          另外其他知識:
          pageEncoding是jsp文件本身的編碼
          contentType的charset是指服務器發送給客戶端時的內容編碼,服務器返回的時候會在head里面指定(可以用firebug看一下):
          Content-Type:text/html;charset=GBK (如果你的jsp里面設定的Content-Type為:charset=GBK )
          pageEncoding 和contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟著一樣了
           


          評論

          # re: 用servlet filter 解決編碼問題的一個小例子  回復  更多評論   

          2007-09-26 12:41 by 清風刀客
          很受啟發,不錯,這個方法好等等去試試.
          主站蜘蛛池模板: 六枝特区| 安图县| 拉萨市| 呼图壁县| 徐州市| 城口县| 淳安县| 荆门市| 眉山市| 太康县| 博罗县| 康平县| 体育| 巫山县| 黎城县| 榆社县| 府谷县| 苍南县| 青龙| 社旗县| 白河县| 永定县| 个旧市| 溧阳市| 成都市| 满城县| 信阳市| 出国| 清水河县| 东明县| 安岳县| 仁寿县| 大邑县| 桃源县| 博罗县| 大田县| 林口县| 昭苏县| 瓮安县| 肇庆市| 旌德县|