JSP中的pageEncoding和contentType屬性_JSP教程
推薦:jsp用jdbc連接db2數(shù)據(jù)庫(kù)的方法數(shù)據(jù)庫(kù)版本:db2 UDB v7.2 服務(wù)器操作系統(tǒng):aix4.3.3 1、關(guān)閉服務(wù)器上的web服務(wù); 2、停止jdbc偵聽(tīng)進(jìn)程db2jd,db2jd一般啟動(dòng)的是6789的端口服務(wù), 先用ps -ef | grep db2jd 查看到它的進(jìn)程號(hào) 然后用kill -9 進(jìn)程號(hào) 命令停止; 3、在數(shù)據(jù)庫(kù)服務(wù)器中,進(jìn)入/usr/lpp/db2_07
關(guān)于JSP頁(yè)面中的pageEncoding和contentType兩種屬性的區(qū)別:
pageEncoding是jsp文件本身的編碼
contentType的charset是指服務(wù)器發(fā)送給客戶端時(shí)的內(nèi)容編碼
JSP要經(jīng)過(guò)兩次的“編碼”,第一階段會(huì)用pageEncoding,第二階段會(huì)用utf-8至utf-8,第三階段就是由Tomcat出來(lái)的網(wǎng)頁(yè), 用的是contentType。
第一階段是jsp編譯成.java,它會(huì)根據(jù)pageEncoding的設(shè)定讀取jsp,結(jié)果是由指定的編碼方案翻譯成統(tǒng)一的UTF-8 JAVA源碼(即.java),如果pageEncoding設(shè)定錯(cuò)了,或沒(méi)有設(shè)定,出來(lái)的就是中文亂碼。
第二階段是由JAVAC的JAVA源碼至java byteCode的編譯,不論JSP編寫時(shí)候用的是什么編碼方案,經(jīng)過(guò)這個(gè)階段的結(jié)果全部是UTF-8的encoding的java源碼。
JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8 encoding的二進(jìn)制碼(即.class),這是JVM對(duì)常數(shù)字串在二進(jìn)制碼(java encoding)內(nèi)表達(dá)的規(guī)范。
第三階段是Tomcat(或其的application container)載入和執(zhí)行階段二的來(lái)的JAVA二進(jìn)制碼,輸出的結(jié)果,也就是在客戶端見(jiàn)到的,這時(shí)隱藏在階段一和階段二的參數(shù)contentType就發(fā)揮了功效
contentType的設(shè)定.
pageEncoding 和contentType的預(yù)設(shè)都是 ISO8859-1. 而隨便設(shè)定了其中一個(gè), 另一個(gè)就跟著一樣了(TOMCAT4.1.27是如此). 但這不是絕對(duì)的, 這要看各自JSPC的處理方式. 而pageEncoding不等于contentType, 更有利亞洲區(qū)的文字 CJKV系JSP網(wǎng)頁(yè)的開(kāi)發(fā)和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。
jsp文件不像.java,.java在被編譯器讀入的時(shí)候默認(rèn)采用的是操作系統(tǒng)所設(shè)定的locale所對(duì)應(yīng)的編碼,比如中國(guó)大陸就是GBK,臺(tái)灣就是BIG5或者M(jìn)S950。而一般我們不管是在記事本還是在ue中寫代碼,如果沒(méi)有經(jīng)過(guò)特別轉(zhuǎn)碼的話,寫出來(lái)的都是本地編碼格式的內(nèi)容。所以編譯器采用的方法剛好可以讓虛擬機(jī)得到正確的資料。
但是jsp文件不是這樣,它沒(méi)有這個(gè)默認(rèn)轉(zhuǎn)碼過(guò)程,但是指定了pageEncoding就可以實(shí)現(xiàn)正確轉(zhuǎn)碼了。
舉個(gè)例子:
<%@ page contentType="text/html;charset=utf-8" %>大都會(huì)打印出亂碼,因?yàn)檩斎氲?ldquo;你好”是gbk的,但是服務(wù)器是否正確抓到“你好”不得而知。
但是如果更改為
<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>這樣就服務(wù)器一定會(huì)是正確抓到“你好”了。
分享:用JSP+JavaScript打造二級(jí)級(jí)聯(lián)下拉菜單class(一級(jí)欄目信息):classId(自動(dòng)編號(hào)),className(欄目名稱), Nclass(二級(jí)欄目信息), NclassId(自動(dòng)編號(hào)),NclassName(欄目名稱),parentId(一級(jí)欄目id,與class表中的classId關(guān)聯(lián)) %@ page contentType=text/html; charset=GB2312 language=java errorP
- jsp用jdbc連接db2數(shù)據(jù)庫(kù)的方法
- 用JSP+JavaScript打造二級(jí)級(jí)聯(lián)下拉菜單
- 在JSP環(huán)境中配置使用fckeditor詳細(xì)講解
- JSP中include指令和include行為的區(qū)別
- JSP獲取客戶端的瀏覽器和操作系統(tǒng)信息
- Java程序員要掌握的十個(gè)JSP中的標(biāo)簽庫(kù)
- 構(gòu)造JSP/Javabean開(kāi)發(fā)和發(fā)布環(huán)境的方法
- 通過(guò)JSP預(yù)編譯消除性能瓶頸
- 用JSP實(shí)現(xiàn)數(shù)據(jù)庫(kù)圖片的存儲(chǔ)與顯示實(shí)例
- 在JSP頁(yè)面中的應(yīng)用JavaBean
- JSP基本語(yǔ)法與簡(jiǎn)單表單處理
- 在JSP編程中Application的使用方法詳解
JSP教程Rss訂閱編程教程搜索
JSP教程推薦
- 什么是模式?什么是框架?
- 解析Struts配置教程
- 為J2EE定制一個(gè)用來(lái)處理錯(cuò)誤的異常處理框架
- JSF與Struts框架的異同
- J2ME中實(shí)現(xiàn)可伸展目錄樹(shù)TreeList
- Sun微系統(tǒng)預(yù)計(jì)下一代Java手機(jī)技術(shù)年內(nèi)將問(wèn)世
- JSP實(shí)例:Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能實(shí)例
- 正則表達(dá)式入門簡(jiǎn)介
- 總結(jié)Hibernate經(jīng)驗(yàn)
- 解密21種Java開(kāi)發(fā)中應(yīng)避免的錯(cuò)誤
猜你也喜歡看這些
- J2EE架構(gòu)和過(guò)程1
- NetBeans 4.0創(chuàng)建J2ME手機(jī)RSS閱讀器
- JAVA實(shí)現(xiàn)數(shù)據(jù)庫(kù)基本操作指南
- JSP與XML的交互有哪些
- 總結(jié)Hibernate經(jīng)驗(yàn)
- 詳解Jsp傳遞中文參數(shù)
- TOMCAT主目錄與虛擬目錄的配置
- 揭秘全面提升JSP應(yīng)用程序性能的七個(gè)方法
- Apache Tomcat 5.5部署jsp項(xiàng)目總結(jié)之——jsp亂碼問(wèn)題的解決
- JSP網(wǎng)站開(kāi)發(fā)環(huán)境的目錄結(jié)構(gòu)標(biāo)準(zhǔn)
- 相關(guān)鏈接:
- 教程說(shuō)明:
JSP教程-JSP中的pageEncoding和contentType屬性
。