Java Tools

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

          編寫java網(wǎng)頁(servlet\jsp),需要關(guān)心response(反饋給客戶端的頁面)和request(來自客戶端的數(shù)據(jù))的編碼問題。

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

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

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

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

          評論

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

          主站蜘蛛池模板: 临湘市| 襄汾县| 公主岭市| 昭通市| 拉萨市| 建阳市| 高陵县| 宁蒗| 北流市| 通道| 福州市| 聊城市| 武宣县| 长白| 大理市| 林周县| 自贡市| 奉贤区| 嘉义县| 宝坻区| 九龙县| 泰和县| 荃湾区| 云林县| 原阳县| 长春市| 珠海市| 沂南县| 鲜城| 宾川县| 左云县| 全椒县| 浦县| 固原市| 临西县| 通化市| 长垣县| 梅州市| 诸城市| 沂水县| 龙南县|