JSP中的編碼

來源:互聯網
上載者:User

JSP中的編碼設定:

1. pageEncoding:<%@ page pageEncoding="UTF-8"%>

jsp頁面編碼: jsp檔案本身的編碼  

 

2. contentType: <%@ page contentType="text/html; charset=UTF-8"%>

web頁面顯示編碼:jsp的輸出資料流在瀏覽器中顯示的編碼  

 

3. html頁面charset:<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

web頁面輸入編碼: 輸入框輸入的字型編碼    

 

4. setCharacterEncoding:request.setCharacterEncoding(),response.setCharacterEncoding()

web伺服器輸入的請求流: web Server相應瀏覽器的請求資料   

 

5 .setContentType:response.setContentType()

web伺服器輸出的響應流: web Server相應瀏覽器的輸出資料  

 

他們之間的相互影響和範圍,以及先後作用順序

 

    1. pageEncoding: 只是指明了 JSP 頁面本身的編碼格式,跟頁面顯示的編碼沒有關係;
    容器在讀取(檔案)或者(資料庫)或者(字串常量)時將起轉化為內部使用的 Unicode,而頁面顯示的時候將
    內部的Unicode轉換為contentType指定的編碼後顯示頁面內容;
    如果pageEncoding屬性存在,那麼JSP頁面的字元編碼方式就由pageEncoding決定,
    否則就由contentType屬性中的charset決定,如果charset也不存在,JSP頁面的字元編碼方式就採用
    預設的ISO-8859-1。
 

    2. contentType: 指定了MIME類型和JSP頁面回應時的字元編碼方式。MIME類型的預設值是“text/html”;
    字元編碼方式的預設值是“ISO-8859-1”. MIME類型和字元編碼方式由分號隔開;
 

    3. pageEncoding和contentType的關係:
        1. pageEncoding的內容只是用於jsp輸出時的編碼,不會作為header發出去的; 是告訴web Server
            jsp頁面按照什麼編碼輸出,即web伺服器輸出的響應流的編碼;
       2. 第一階段是jsp編譯成.java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯
            成統一的UTF-8 JAVA源碼(即.java).
       3. 第二階段是由JAVAC的JAVA源碼至java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,
            經過這個階段的結果全部是UTF-8的encoding的java源碼.JAVAC用UTF-8的encoding讀取
            java源碼,編譯成UTF-8 encoding的二進位碼(即.class),這是JVM對常數字串在二進位碼
            (java encoding)內表達的規範.
       4. 第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進位碼,
            輸出的結果,也就是在用戶端見到的,這時隱藏在階段一和階段二的參數contentType就發揮了功效    
 

    4. 和contentType效果一樣的設定方式還有 html頁面charset, response.setCharacterEncoding(),
        response.setContentType(),response.setHeader(); response.setContentType(),
        response.setHeader();優先順序最好,其次是response.setCharacterEncoding();再者是
        <%@page contentType="text/html; chareset=gbk"%>,最後是<meta http-equiv="content-type"
        content="text/html; charset=gb2312" />.

    5. web頁面輸入編碼: 在設定頁面編碼<%@page contentType="text/html; chareset=gbk"%>的同時,也就指定了頁面的輸入編碼;如果頁面的顯示被設定為UTF-8,那麼使用者所有的頁面輸入都會按照 UTF-8 編碼; 伺服器端程式在讀 取表單輸入之前要設定輸入編碼; 表單被提交後,瀏覽器會將表單欄位值轉換為指定字元集對應的位元組值,然後根據 HTTP 標準 URL編碼方案對結果位元組進行編碼.但是頁面需要告訴伺服器當前頁面的編碼方式;request.setCharacterEncoding(),能修改Serverlet擷取請求的編碼,response.setCharacterEncoding(),能修改Serverlet返回結果的編碼.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.