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  回復  更多評論
            

          主站蜘蛛池模板: 清流县| 红安县| 元朗区| 安乡县| 厦门市| 昌平区| 全州县| 郸城县| 富阳市| 连城县| 灌阳县| 宜宾县| 新蔡县| 浏阳市| 上犹县| 临清市| 山东省| 讷河市| 井陉县| 西畴县| 内黄县| 温州市| 高雄市| 合川市| 东平县| 汪清县| 九龙坡区| 夹江县| 云梦县| 台湾省| 七台河市| 永靖县| 扶余县| 扶沟县| 威信县| 通辽市| 鄂伦春自治旗| 泗阳县| 铜陵市| 宝鸡市| 谢通门县|