| 屬性 | 作用階段 | 說明 |
|---|---|---|
pageEncoding | JSP 編譯階段 | 指定 JSP 檔案本身的儲存編碼,容器據此讀取原始碼並轉為統一的 UTF-8 Java 原始碼(.java)。 |
contentType (charset) | 回應輸出階段 | 指定伺服器送往瀏覽器的內容編碼,即 HTTP Response Header 中的 Content-Type: text/html; charset=...。 |
pageEncoding 讀取 JSP,若設錯或缺失,中文會產生亂碼,進而導致編譯出的 Java 原始碼錯誤。javac 以 UTF-8 讀取 Java 原始碼,編譯為 UTF-8 編碼的位元組碼(.class),此階段與原始 JSP 編碼無關。contentType 的 charset 編碼送往客戶端。ISO-8859-1。pageEncoding 對應原始檔編碼,contentType 對應輸出編碼(如 UTF-8),特別利於 CJKV 多語系頁面。<%-- 僅設 contentType 為 UTF-8,若原始檔為 GBK,中文會亂碼 --%>
<%@ page contentType="text/html;charset=utf-8" %>
<%-- 同時指定 pageEncoding=GBK,容器正確讀取原始檔,輸出再轉 UTF-8 --%>
<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK" %>
若在記事本或 UE 編輯器直接儲存,檔案編碼通常為系統預設(大陸 GBK、台灣 Big5),務必以 pageEncoding 宣告該編碼。
pageEncoding。pageEncoding="UTF-8" contentType="text/html;charset=UTF-8",一勞永逸。