瘋狂

          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 清風刀客
          很受啟發,不錯,這個方法好等等去試試.
          主站蜘蛛池模板: 九江市| 宜兰县| 林口县| 手机| 西华县| 红河县| 库尔勒市| 湾仔区| 乌海市| 洪泽县| 大名县| 裕民县| 襄樊市| 磐石市| 新丰县| 淮滨县| 运城市| 梓潼县| 盘锦市| 宜良县| 娄烦县| 自治县| 临沭县| 保定市| 松阳县| 永胜县| 新竹市| 侯马市| 杭州市| 鲁山县| 泗洪县| 武城县| 海阳市| 荥阳市| 铁力市| 吴桥县| 扶风县| 屯昌县| 陈巴尔虎旗| 介休市| 大竹县|