JSP中的編碼設定
- pageEncoding:<%@ page pageEncoding=”UTF-8”%>
jsp頁面編碼: jsp檔案本身的編碼 - contentType: <%@ page contentType=”text/html; charset=UTF-8”%>
web頁面顯示編碼:jsp的輸出流在瀏覽器中顯示的編碼 - html頁面charset:
web頁面輸入編碼: 輸入框輸入的字型編碼 - setCharacterEncoding:request.setCharacterEncoding(),response.setCharacterEncoding()
web伺服器輸入的請求流: web Server相應瀏覽器的請求資料 - setContentType:response.setContentType()
web伺服器輸出的響應流: web Server相應瀏覽器的輸出資料
他們之間的相互影響和作用域,以及先後作用順序
1. pageEncoding: 只是指明瞭 JSP 頁面本身的編碼格式,跟頁面顯示的編碼沒有關係;
容器在讀取(檔案)或者(資料庫)或者(字串常量)時將起轉化為內部使用的 Unicode,而頁面顯示的時候將
內部的Unicode轉換為contentType指定的編碼後顯示頁面內容;
如果pageEncoding屬性存在,那麼JSP頁面的字元編碼方式就由pageEncoding決定,
否則就由contentType屬性中的charset決定,如果charset也不存在,JSP頁面的字元編碼方式就採用
預設的ISO-8859-1。
2. contentType: 指定了MIME型別和JSP頁面迴應時的字元編碼方式。MIME型別的預設值是“text/html”;
字元編碼方式的預設值是“ISO-8859-1”. MIME型別和字元編碼方式由分號隔開;
3. pageEncoding和contentType的關係:
1. pageEncoding的內容只是用於jsp輸出時的編碼,不會作為header發出去的; 是告訴web Server
jsp頁面按照什麼編碼輸出,即web伺服器輸出的響應流的編碼;
2. 第一階段是jsp編譯成.java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯
成統一的UTF-8 JAVA原始碼(即.java).
3. 第二階段是由JAVAC的JAVA原始碼至java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,
經過這個階段的結果全部是UTF-8的encoding的java原始碼.JAVAC用UTF-8的encoding讀取
java原始碼,編譯成UTF-8 encoding的二進位制碼(即.class),這是JVM對常數字串在二進位制碼
(java encoding)內表達的規範.
4. 第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進位制碼,
輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的引數contentType就發揮了功效
4. 和contentType效果一樣的設定方式還有 html頁面charset, response.setCharacterEncoding(),
response.setContentType(),response.setHeader(); response.setContentType(),
response.setHeader();優先順序最好,其次是response.setCharacterEncoding();再者是
<%@page contentType="text/html; chareset=gbk"%>,最後是<meta http-equiv="content-type"
content="text/html; charset=gb2312" />.
5. web頁面輸入編碼: 在設定頁面編碼<%@page contentType="text/html; chareset=gbk"%>的同時,也就指定了頁面的輸入編碼;
如果頁面的顯示被設定為UTF-8,那麼使用者所有的頁面輸入都會按照 UTF-8 編碼; 伺服器端程式在讀 取表單輸入之前要設定輸入編碼;
表單被提交後,瀏覽器會將表單欄位值轉換為指定字符集對應的位元組值,然後根據 HTTP 標準 URL編碼方案對結果位元組進行編碼.
但是頁面需要告訴伺服器當前頁面的編碼方式;
request.setCharacterEncoding(),能修改Serverlet獲取請求的編碼,response.setCharacterEncoding(),能修改Serverlet返回結果的編碼.
相關文章
- eclipse設定jsp字元編碼EclipseJS字元
- Eclipse中設定編碼的方式Eclipse
- MyEclipse - Jsp中Javascript的提示設定EclipseJSJavaScript
- Vim中輸入法與編碼設定
- jsp的編碼問題JS
- JPA設定MySQL編碼MySql
- 編碼設定應注意
- Tomcat 設定編碼Tomcat
- 小型機設定WebSphere的預設編碼Web
- java編譯、編碼、語言設定Java編譯
- MyEclipse設定文字編碼Eclipse
- MySQL字元編碼設定方法MySql字元
- Ubuntu 下設定中文編碼Ubuntu
- spring字元編碼設定Spring字元
- MyEclipse設定編碼方式Eclipse
- 在Eclipse下編寫HTML/CSS/JS/JSP/Java程式碼時,程式碼自動提示的相關設定EclipseHTMLCSSJSJava
- php匯入時設定不同的編碼PHP
- 設定Tomcat的UTF-8編碼Tomcat
- Python 設定系統預設編碼Python
- IDEA如何設定編碼格式,字元編碼,全域性編碼和專案編碼格式Idea字元
- Tomcat/JSP中文編碼配置TomcatJS
- 設定myeclipse的預設編碼為utf-8Eclipse
- Eclipse檔案編碼設定的問題Eclipse
- 關於控制檯編碼的設定問題
- 關於jsp中的亂碼!!!!JS
- 詳解Spring中的CharacterEncodingFilter--forceEncoding為true在java程式碼中設定失效--html設定編碼無效?不知真假SpringEncodingFilterJavaHTML
- Python設定編碼和PYTHONPATHPython
- 設定oracle sqlplus中的Edit編輯模式OracleSQL模式
- Windows CMD永久設定UTF-8編碼Windows
- 【程式設計素質】Java編碼約定程式設計Java
- MySQL設定utf8mb4編碼MySql
- Java設定JSON字串引數編碼JavaJSON字串
- 請教,struts中jsp編譯錯誤JS編譯
- 在JSP中的JavaBean設定靜態屬性和方法有沒有意義?JSJavaBean
- Spring Security 5中的預設密碼編碼器Spring密碼
- 資料庫表的基本操作和編碼格式設定資料庫
- 定點數的編碼表示
- 網頁字元編碼、語言程式碼設定與SEO網頁字元