1. 程式人生 > >我們在寫jsp頁面的時候經常會在頁面頭部使用如下程式碼:

我們在寫jsp頁面的時候經常會在頁面頭部使用如下程式碼:

<%@ 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是指伺服器傳送給客戶端時的內容編碼。