Java Tools

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

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

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

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

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

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

          評(píng)論

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

          主站蜘蛛池模板: 卢龙县| 上思县| 武城县| 临桂县| 沛县| 庆城县| 漠河县| 朝阳县| 泗阳县| 盱眙县| 平阴县| 运城市| 商水县| 都匀市| 乐至县| 遂溪县| 尼玛县| 蒲江县| 康马县| 洛川县| 油尖旺区| 长乐市| 乐陵市| 杭锦后旗| 平潭县| 宜兴市| 中阳县| 木里| 永平县| 九江市| 馆陶县| 平原县| 堆龙德庆县| 澄迈县| 当涂县| 兴海县| 老河口市| 民权县| 磴口县| 绵阳市| 三穗县|