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 和田雨 閱讀(985) 評論(1)  編輯  收藏 所屬分類: Servlet

          評論

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

          主站蜘蛛池模板: 山阳县| 云梦县| 隆化县| 常德市| 法库县| 布拖县| 凤阳县| 温泉县| 平邑县| 深水埗区| 商河县| 当阳市| 安宁市| 怀柔区| 和顺县| 垣曲县| 体育| 满城县| 赞皇县| 陇南市| 青海省| 剑川县| 崇阳县| 晋城| 泸西县| 英山县| 教育| 宁乡县| 石家庄市| 华池县| 鄄城县| 潼关县| 德安县| 阿克陶县| 北碚区| 齐齐哈尔市| 顺平县| 奈曼旗| 宁海县| 宝丰县| 上高县|