pageEncoding解析

pageEncoding 作爲 Jsp page 指令的一個屬性,表示當前 jsp 文件的編碼格式。
Jsp 需要由 jsp 引擎先轉化爲 servlet 源代碼然後再編譯 ,最後由 servlet 引擎載入執行。那麼 , pageEncoding 就主要用在(建議只用在) jsp 轉爲 servlet code 這步,由於 jsp 引擎需要讀取 jsp file ,那麼就需要知道這個 jsp file 的編碼,以防裏面的非英文字符轉化到 servler code 時不一致。
[color=red]注意:[/color][b] 第一次默認使用 iso8809-1 讀取 jsp 文件以獲得 jsp 中 pageEncoding 的值,當然無論什麼編碼 ( 除了utf-16 ? ) 下英文的編碼都一樣,這樣讀去開頭的 jsp 指令不會有錯的。[/b]

[color=blue]contentType:[/color]


contentType : 用處就很多了,主要用於設置 http 頭 的 content-type ,來指示 servlet 引擎以什麼編碼向瀏覽器傳遞信息以及指示瀏覽器以什麼編碼來顯示服務器傳過來的信息。


不過在 servlet 以及 jsp 中也有點副作用了。 在 jsp 中如果沒有設置 pageEncoding ,jsp 引擎 則讀取 contentType裏的 charset 來替代 pageEncoding 作爲 jsp 文件的編碼,如果兩者都沒有則用iso8809-1讀取了,那麼毫無疑問裏面由中文的話,必定亂碼。


[color=olive]比較:[/color]


那麼既然 contentType 可以完成 pageEncoding 的工作,爲什麼還要 pageEncoding 這個屬性呢?我覺得是爲了一個特殊情況, 如果 jsp 文件是編碼 A ,但是想要在網絡上以 B 編碼 傳輸,以及瀏覽器以 B 編碼來顯示服務器信息,則這時候只能設置 jsp 文件 pageEncoding 爲 A ,contentType charset 爲 B編碼 。



一般,如果 jsp 文件編碼和網絡傳輸編碼一致的話,則只設置contentType charset 即可,這也正是我以前一直的做法,不過這並不意味着 pageEncoding 沒用了,畢竟還有上述的特殊條件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章