瀏覽器頁面亂碼
當有人問你:JSP中的<%@page pageEncoding=”UTF-8”%>具體的功能是什麼?
你答:設定頁面編碼字符集。沒了,那可不太合適
JSP-> .java檔案的翻譯過程,由誰執行?
是Tomcat(中介軟體容器)執行的.
那麼中介軟體容器執行在什麼環境中?
相信有人不太清楚,是執行在你的作業系統中的.
那麼作業系統的字符集又是什麼呢?
作業系統的字符集是根據具體環境定義的:
如:中國GBK、中國臺灣BIG5等等.
Tomcat預設使用ISO-8859-1字符集編譯jsp.
JSP提供頁面指令,設定頁面字符集, 通知中介軟體容器在翻譯JSP的時候,使用什麼字符集來翻譯.呼叫JVM編譯和解釋java程式碼及位元組碼檔案的時候,使用什麼字符集.
例如:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
1.pageEncoding與contentType中的charset的區別
1)在jsp中pageEncoding的含義:巨集觀上指jsp檔案本身的編碼,pageEncoding="UTF-8",指jsp檔案本身的編碼為UTF-8
2) 而contentType中的charset指的是伺服器傳送給客戶端時的內容編碼,
contentType="text/html; charset=UTF-8",是指伺服器傳送給客戶端的文字型別是text/html,編碼格式是UTF-8
底層:
.jsp檔案被轉譯成.java檔案時, response.setContentType("text/html;charset=ISO-8859-1");
[size=10.5000pt]2. pageEncoding="UTF-8"與pageEncoding="ISO-8859-1"區別
[size=10.5000pt]1)在瀏覽器上顯示,pageEncoding="UTF-8"格式的jsp頁面中的中文沒有亂碼,而pageEncoding="ISO-8859-1"格式的jsp頁面中的中文有亂碼
[size=10.5000pt]2)在.jsp檔案被轉譯成.java檔案時,pageEncoding="UTF-8"格式的.java檔案中的中文沒有亂碼,而pageEncoding="ISO-8859-1"格式的.java檔案中的中文有亂碼
如下:
代表pageEncoding="ISO-8859-1"格式的.java檔案
out.write(" \t\t我爱我家\r\n");
out.write(" \t\t<form action=\"#\">\r\n");
out.write(" \t\t\t姓å:<input type=\"text\">\r\n");
out.write(" \t\t\t<input type=\"submit\" value=\"æ交\">\r\n");
代表pageEncoding="UTF-8"格式的.java檔案
out.write(" \t\t我愛我家\r\n");
out.write(" \t\t<form action=\"#\">\r\n");
out.write(" \t\t\t姓名:<input type=\"text\">\r\n");
out.write(" \t\t\t<input type=\"submit\" value=\"提交\">\r\n");
[size=10.5000pt]3)總結:也因此說明1)條結論中為什麼在瀏覽器中pageEncoding="ISO-8859-1"格式的jsp頁面中的中文有亂碼原因:
在於pageEncoding="ISO-8859-1"格式的.jsp檔案在被轉譯成.java檔案時就已經出現亂碼,伺服器再把亂碼的資料響應到瀏覽器,自然瀏覽器展示出來的資料也是亂碼的。