日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

JSP和Servlet對中文的處理過程(3)_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:困擾JSP的一些問題與解決方法
如今每一個使用servlets的開發(fā)者都知道JSP,一種由Sun公司發(fā)明并花費(fèi)大量精力加以推行并建構(gòu)在servlet技術(shù)之上的web技術(shù)。JSP將servlet中的html代碼脫離了出來,從而可以加速web應(yīng)用開發(fā)

JSP:從源文件到Class的過程

Jsp的源文件是以“.jsp”結(jié)尾的文本文件。在本節(jié)中,將闡述JSP文件的解釋和編譯過程,并跟蹤其中的中文變化。

1、JSP/Servlet引擎提供的JSP轉(zhuǎn)換工具(jspc)搜索JSP文件中用中指定的charset。如果在JSP文件中未指定,則取JVM中的默認(rèn)設(shè)置file.encoding,一般情況下,這個值是ISO8859-1;

2、jspc用相當(dāng)于“javac –encoding ”的命令解釋JSP文件中出現(xiàn)的所有字符,包括中文字符和ASCII字符,然后把這些字符轉(zhuǎn)換成Unicode字符,再轉(zhuǎn)化成UTF格式,存為JAVA文件。ASCII碼字符轉(zhuǎn)化為Unicode字符時只是簡單地在前面加“00”,如“A”,轉(zhuǎn)化為“\u0041”(不需要理由,Unicode的碼表就是這么編的)。然后,經(jīng)過到UTF的轉(zhuǎn)換,又變回“41”了!這也就是可以使用普通文本編輯器查看由JSP生成的JAVA文件的原因;

3、引擎用相當(dāng)于“javac –encoding UNICODE”的命令,把JAVA文件編譯成CLASS文件;

先看一下這些過程中中文字符的轉(zhuǎn)換情況。有如下源代碼:


這段代碼是在UltraEdit for Windows上編寫的。保存后,“中文”兩個字的16進(jìn)制編碼為“D6 D0 CE C4”(GB2312編碼)。經(jīng)查表,“中文”兩字的Unicode編碼為“\u4E2D\u6587”,用 UTF表示就是“E4 B8 AD E6 96 87”。打開引擎生成的由JSP文件轉(zhuǎn)變而成的JAVA文件,發(fā)現(xiàn)其中的“中文”兩個字確實被“E4 B8 AD E6 96 87”替代了,再查看由JAVA文件編譯生成的CLASS文件,發(fā)現(xiàn)結(jié)果與JAVA文件中的完全一樣。

再看JSP中指定的CharSet為ISO-8859-1的情況。


同樣,該文件是用UltraEdit編寫的,“中文”這兩個字也是存為GB2312編碼“D6 D0 CE C4”。先模擬一下生成的JAVA文件和CLASS文件的過程:jspc用ISO-8859-1來解釋“中文”,并把它映射到Unicode。由于ISO-8859-1是8位的,且是拉丁語系,其映射規(guī)則就是在每個字節(jié)前加“00”,所以,映射后的Unicode編碼應(yīng)為“\u00D6\u00D0\u00CE\u00C4”,轉(zhuǎn)化成UTF后應(yīng)該是“C3 96 C3 90 C3 8E C3 84”。好,打開文件看一下,JAVA文件和CLASS文件中,“中文”果然都表示為“C3 96 C3 90 C3 8E C3 84”。

如果上述代碼中不指定,即把第一行寫成“”,JSPC會使用file.encoding的設(shè)置來解釋JSP文件。在RedHat 6.2上,其處理結(jié)果與指定為ISO-8859-1是完全相同的。

到現(xiàn)在為止,已經(jīng)解釋了從JSP文件到CLASS文件的轉(zhuǎn)變過程中中文字符的映射過程。一句話:從“JspCharSet到Unicode再到UTF”。下表總結(jié)了這個過程:

表2 “中文”從JSP到CLASS的轉(zhuǎn)化過程

Jsp-CharSet
JSP文件中
JAVA文件中
CLASS文件中

GB2312
D6 D0 CE C4

(GB2312)
從\u4E2D\u6587(Unicode)到

E4 B8 AD E6 96 87 (UTF)
E4 B8 AD E6 96 87 (UTF)

ISO-8859-1
D6 D0 CE C4

(GB2312)
從\u00D6\u00D0\u00CE\u00C4 (Unicode)到C3 96 C3 90 C3 8E C3 84 (UTF)
C3 96 C3 90 C3 8E C3 84 (UTF)

無(默認(rèn)=file.encoding)
同ISO-8859-1
同ISO-8859-1
同ISO-8859-1

分享:JavaBean 在jsp和serlvle中傳遞技術(shù)要點(diǎn)
javaBean 在jsp和serlvle中的傳遞技術(shù)要點(diǎn) 一、 初始化javaBean 1、 在jsp中 在上一段的代碼中執(zhí)行過程如下: ? 按照scope的參數(shù)尋找相同id的javabean,如果找到了就跳出該; ?

來源:模板無憂//所屬分類:JSP教程/更新時間:2008-08-22
相關(guān)JSP教程