1. 程式人生 > >瀏覽器頁面亂碼

瀏覽器頁面亂碼

當有人問你: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檔案時就已經出現亂碼,伺服器再把亂碼的資料響應到瀏覽器,自然瀏覽器展示出來的資料也是亂碼的。