字元編碼與JSP學習筆記

來源:互聯網
上載者:User

標籤:

字元編碼與JSP學習筆記

 

一些基本概念

字元集(Character):
一系列抽象字元(可以是各種國家的文字、符號、數字等等)的集合。

常見字元集名稱:
ASCII字元集、GB2312字元集、BIG5字元集、 GB18030字元集、Unicode字元集等。

編碼規則(Character Encoding):
將字元集與另一類資訊集合互相對應起來的法則(在這裡對應的是電腦中的數字代碼)。
每種字元集都有相應的(一個或多個)編碼規則。
電腦要準確的處理各種字元集文字,就需要按照相應的編碼規則進行轉換,以便電腦能夠識別和儲存各種文字。

編碼與解碼:
電腦中儲存的資訊都是用位元表示的數字代碼(都是0和1),
而我們在螢幕上看到的英文、漢字等字元是位元轉換之後的結果。
這之間存在著"編碼"、"解碼"的過程。
按照某種編碼規則將字元轉換成位元字代碼儲存到電腦中,稱為"編碼"。
反之,按照某種編碼規則將儲存在電腦中的位元字代碼解析成對應的字元顯示出來,稱為"解碼"。

亂碼的發生:
在解碼過程中,如果使用了與編碼時不一致的編碼規則,就會導致最後顯示的內容出現亂碼。



文本編輯軟體(這裡指帶有文本編輯功能的軟體)和編碼規則

文本編輯軟體在儲存常值內容的時候一般都是根據系統預設的編碼規則來進行編碼的。
文本編輯軟體在讀取內容的時候一般都是根據所讀取的內容來推測其編碼規則,
並以此編碼規則來進行解碼和顯示。
但是有時會出現推測不準確的現象,導致顯示出來的內容是亂碼。
也有不少文本編輯軟體可以指定開啟文本時所使用的編碼規則。



JSP、html檔案和編碼規則

靜態網頁html中一般都會有
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
這麼一段話。
其中的“charset=ISO-8859-1”用來告訴瀏覽器以什麼編碼規則來解碼顯示網頁內容。
靜態網頁html顯示亂碼:
如果html檔案中的“charset”和html檔案實際使用的編碼規則不一致,就會出現亂碼。

動態網頁JSP中一般都會有
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
這麼一段話。
其中“pageEncoding”告訴web伺服器這個jsp檔案編寫時使用的是什麼編碼規則。
“contentType charset”用來告訴瀏覽器以什麼編碼規則來解碼顯示網頁內容。
如果“pageEncoding”和“contentType charset”都沒有設定的話,那麼兩者都會預設使用“ISO-8859-1”。
如果“pageEncoding”和“contentType charset”其中有一個指定的話,那麼另一個也一樣。
一個JSP的源檔案需要經過三個階段,才能完成一次完整的輸出。
第一階段:從JSP到Servlet(.java檔案)
Web伺服器會根據“pageEncoding”的設定解碼讀取JSP,再翻譯成統一的UTF-8 JAVA源碼(即.java)。
第二階段:從Servlet檔案(.java)到Java位元組碼檔案(.class)
此過程是由JAVAC命令完成的,主要是將(.java)的源檔案翻譯成JVM可識別的Java位元組碼檔案(二進位碼檔案)。
整個過程都是UTF-8編碼規則下進行的。
第三階段:從Web伺服器到瀏覽器
Web伺服器將第二階段之後得到的Java位元組碼根據“contentType charset”進行轉換並輸出到瀏覽器。
瀏覽器再根據“contentType charset”解碼顯示。
動態網頁JSP顯示亂碼:
如果JSP檔案中的“pageEncoding”和其實際使用的編碼規則不一致,就會出現亂碼。
如果JSP檔案中的存在其“contentType charset”不支援的字元,最後顯示時也會出現亂碼。

以上。如果有不對的地方,請高手幫忙指正,謝謝!

字元編碼與JSP學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.