java中文亂碼解決之道(七)-----JSP頁面編碼過程,java-----jsp

來源:互聯網
上載者:User

java中文亂碼解決之道(七)-----JSP頁面編碼過程,java-----jsp

我們知道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檔案了。

第三階段

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

流程如如下:

-----原文出自:http://cmsblogs.com/?p=1518,請尊重作者辛勤勞動成果,轉載說明出處.

-----個人網站:http://cmsblogs.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.