fkjava

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

           

          在一個jsp文件中,有三處地方定義了字符集,哪位兄弟,請幫忙解答一下如下問題!先謝了!

           

          第一個問題:這三處定義字符集的作用分別是什么?

          第二個問題:這三處定義字符集的異同點是什么?

          第三個問題:這三個定義字符集的地方?在jsp文件都是必須要的嗎?]

           

          <!-- 1 -->

          <%@ page language="java" contentType="text/html;charset=UTF-8" errorPage="error.jsp" %>

          <!-- 2 -->

          <%@ page pageEncoding="UTF-8"%>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

          <html>

          <head>

          <!-- 3 -->

          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

          <title>DispathTruck</title>

           

           

          關于JSP頁面中的pageEncodingcontentType兩種屬性的區別:

           

          pageEncodingjsp文件本身的編碼

           

          contentTypecharset是指服務器發送給客戶端時的內容編碼

           

          JSP要經過兩次的“編碼”,第一階段會用pageEncoding,第二階段會用utf-8utf-8,第三階段就是由Tomcat出來的網頁, 用的是contentType

           

          第一階段是jsp編譯成.java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8 JAVA源碼(即.java),如果pageEncoding設定錯了,或沒有設定,出來的就是中文亂碼。

           

          第二階段是由JAVACJAVA源碼至java byteCode的編譯,不論JSP編寫時候用的是什么編碼方案,經過這個階段的結果全部是UTF-8encodingjava源碼。

           

          JAVACUTF-8encoding讀取java源碼,編譯成UTF-8 encoding的二進制碼(即.class),這是JVM對常數字串在二進制碼(java encoding)內表達的規范。

           

          第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進制碼,輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的參數contentType就發揮了功效

           

          contentType的設定.

           

          pageEncoding contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟著一樣了(TOMCAT4.1.27是如此). 但這不是絕對的, 這要看各自JSPC的處理方式. pageEncoding不等于contentType, 更有利亞洲區的文字 CJKVJSP網頁的開發和展示, (pageEncoding=GB2312 不等于 contentType=utf-8)

           

          jsp文件不像.java.java在被編譯器讀入的時候默認采用的是操作系統所設定的locale所對應的編碼,比如中國大陸就是GBK,臺灣就是BIG5或者MS950。而一般我們不管是在記事本還是在ue中寫代碼,如果沒有經過特別轉碼的話,寫出來的都是本地編碼格式的內容。所以編譯器采用的方法剛好可以讓虛擬機得到正確的資料。

           

          但是jsp文件不是這樣,它沒有這個默認轉碼過程,但是指定了pageEncoding就可以實現正確轉碼了。

           

          舉個例子:

           

          <%@ page contentType="text/html;charset=utf-8" %>

           

          大都會打印出亂碼,因為輸入的“你好”是gbk的,但是服務器是否正確抓到“你好”不得而知。

           

          但是如果更改為

           

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

           

          這樣就服務器一定會是正確抓到“你好”了'

          您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

          信息咨詢:Q564205990           星老師

          posted on 2012-08-12 17:30 瘋狂軟件 閱讀(708) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 蛟河市| 香格里拉县| 双流县| 永年县| 巩留县| 新丰县| 上犹县| 崇左市| 东城区| 宜兴市| 郯城县| 遂溪县| 赤壁市| 贞丰县| 桃源县| 遵义县| 靖远县| 庄浪县| 永平县| 台前县| 来安县| 台东县| 广河县| 孟州市| 读书| 大方县| 芦溪县| 额敏县| 广饶县| 航空| 宜黄县| 江达县| 友谊县| 鲁山县| 香港 | 武冈市| 汽车| 铁岭市| 武汉市| 泸定县| 靖远县|