轉!! 關於jsp編碼設置 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

咱們在寫jsp頁面的時候常常會在頁面頭部使用以下代碼:html

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
 
那麼 pageEncoding , contentType 分別用來作什麼那?在解釋以前讓咱們先了解下jsp從被請求到響應經歷的三個階段:
 
第一階段: 將jsp編譯成Servlet(.java)文件。用到的指令是pageEncoding,根據pageEncoding=「XXX」的指示,找到編碼的規則爲「XXX」,服務器在將JSP文件編譯成.java文件時會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8編碼的JAVA源碼(即.java)。

第二階段: 從Servlet文件(.java)到Java字節碼文件(.class),從UTF-8到UTF-8。在這一階段中,不論JSP編寫時候用的是什麼編碼方案,通過這個階段的結果所有是UTF-8的encoding的java源碼。JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8編碼的二進制碼(即.class),這是JVM對常數字串在二進制碼(java encoding)內表達的規範。這一過程是由JVM的內在規範決定的,不受外界控制。

第三階段: 從服務器到瀏覽器,這在一過程當中用到的指令是contentType。服務器載入和執行由第二階段生成出來JAVA二進制碼,輸出的結果,也就是在客戶端可見到的結果,在此次輸出過程當中,由contentType屬性中的charset來指定,將UTF8形式的二進制碼以charset的編碼形式來輸出。若是沒有人爲設定,則默認的是ISO-8859-1的形式。
 
從以上過程可知:
pageEncoding   :說明jsp內容的編碼。
 
contentType:設置JSP源文件和響應正文的字符集編碼及MIME類型,  contentType的 charset是指服務器發送給客戶端時的內容編碼
相關文章
相關標籤/搜索