java中文亂碼解決之道(七)—–JSP頁面編碼過程

原文地址:http://cmsblogs.com/?p=1518

我們知道JSP頁面是需要轉換爲servlet的,在轉換過程中肯定是要進行編碼的。在JSP轉換爲servlet過程中下面一段代碼起到至關重要的作用。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="GBK" %>

在上面代碼中有兩個地方存在編碼:pageEncoding、contentType的charset。其中pageEncoding是jsp文件本身的編碼,而contentType的charset是指服務器發送給客戶端時的內容編碼。

在前面一篇博客中就提到過(java中文亂碼解決之道(四)—–java編碼轉換過程)jsp在轉換爲Servlet的過程中是需要經過主要的三次編碼轉換過程(除去數據庫編碼轉換、頁面參數輸入編碼轉換):

第一次:轉換爲.java文件;

第二次:轉換爲.class文件;

第三次:業務邏輯處理後輸出。

第一階段

JVM將JSP編譯爲.jsp文件。在這個過程中pageEncoding就起到作用了,JVM首先會獲取pageEncoding的值,如果該值存在則採用它設定的編碼來編譯,否則則採用file.encoding編碼來編譯。

第二階段

JVM將.java文件轉換爲.class文件。在這個過程就與任何編碼的設置都沒有關係了,不管JSP採用了什麼樣的編碼格式都將無效。經過這個階段後.jsp文件就轉換成了統一的Unicode格式的.class文件了。

第三階段

  1. 後臺經過業務邏輯處理後將產生的結果輸出到客戶端。在這個過程中contentType的charset就發揮了功效。如果設置了charset則瀏覽器就會使用指定的編碼格式進行解碼,否則採用默認的ISO-8859-1編碼格式進行解碼處理。

流程如如下:

201501150001

發佈了15 篇原創文章 · 獲贊 26 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章