Java Tools

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 16 評論 :: 0 Trackbacks
          看到很多文章在問和答關于java網頁漢字亂碼的情況,有些甚至認為這是servlet包容器實現上的錯誤。
          可是如果讀過servlet規格說明書,關于java網頁編碼的問題就應該迎刃而解了。

          編寫java網頁(servlet\jsp),需要關心response(反饋給客戶端的頁面)和request(來自客戶端的數據)的編碼問題。

          response的編碼可以直接用代碼實現。而request的編碼怎么辦呢?
          以下是servlet規范書上的文字(我粗略翻譯一下吧,不怕見笑):

          -- 整理自<Java Servlet Specification Version 2.3> SRV.4.9 --

          當前,很多瀏覽器并不發送帶有“Content-Type”頭信息的字符編碼限定符,而由讀取HTTP請求的代碼來決定字符的編碼方式。如果客戶端請求未定義編碼限定符,則包容器(如tomcat)用于創建request reader和分析POST數據的request的缺省編碼方式必須是“ISO-8859-1”。然而,為了向開發者指明客戶端沒有發送字符編碼信息的情況,包容器對getCharacterEncoding方法返回null。

          如果客戶端不設置字符編碼方式,并且request不是按照以上缺省編碼方式(iso-8859-1)來編碼,則會發生問題。為了解決這個問題,在接口ServletRequest中加入了一個新的方法setCharacterEncoding(String enc)。開發者可以調用這個方法來替換包容器提供的缺省字符編碼方式。但是,必須在從request中分析任何POST數據或者讀取任何輸入之前,調用這個方法。一旦數據已被讀取,則調用這個方法將不會影響編碼方式。
          posted on 2007-07-02 12:19 和田雨 閱讀(980) 評論(1)  編輯  收藏 所屬分類: Servlet

          評論

          # re: servlet規范要求:request的缺省編碼必須是iso-8859-1 2012-07-20 17:31 fsfsd
          sdfgsdfg  回復  更多評論
            

          主站蜘蛛池模板: 九台市| 丰台区| 姜堰市| 云南省| 博爱县| 沭阳县| 镇安县| 保康县| 红河县| 台湾省| 会宁县| 弋阳县| 翁源县| 剑阁县| 昭平县| 邵阳县| 化州市| 汪清县| 青龙| 尼玛县| 江安县| 靖宇县| 陕西省| 衡阳市| 偏关县| 马尔康县| 威信县| 清流县| 个旧市| 伊通| 岱山县| 武冈市| 筠连县| 彝良县| 千阳县| 安塞县| 琼结县| 水城县| 扶沟县| 安乡县| 阜宁县|