成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlet源文件的轉移

開發 后端
本文介紹Servlet源文件的轉移,以及討論Servlet的編譯過程并跟蹤其中的中文變化。

Servlet源文件是以“.Java”結尾的文本文件。我們將討論Servlet的編譯過程并跟蹤其中的中文變化。

用“Javac”編譯Servlet源文件。Javac可以帶“-encoding ”參數,意思是“用< Compile-charset >中指定的編碼來解釋Servlet源文件”。

源文件在編譯時,用來解釋所有字符,包括中文字符和ASCII字符。然后把字符常量轉變成Unicode字符。最后,把Unicode轉變成UTF。

在Servlet中,還有一個地方設置輸出流的CharSet。通常在輸出結果前,調用HttpServletResponse的setContent Type方法來達到與在JSP中設置一樣的效果,稱之為。
注意:文中一共提到了三個變量:、和。其中,JSP文件只與有關,而和只與Servlet有關。
看下例:

  1. import Javax.servlet.*;  
  2. import Javax.servlet.http.*;  
  3. Class testServlet extends HttpServlet  
  4. {  
  5. public void doGet(HttpServletRequest req,HttpServletResponse resp)  
  6. throws ServletException,Java.io.IOException  
  7. {  
  8. resp.setContentType("text/html; charset=GB2312");  
  9. Java.io.PrintWriter out=resp.getWriter();  
  10. out.println("");  
  11. out.println("#中文#");  
  12. out.println("");  
  13. }  

該文件也是用UltraEdit for Windows編寫的,其中的“中文”兩個字保存為字節流“D6 D0 CE C4”(GB2312編碼)。

開始編譯。Class文件中“中文”兩字的十六進制碼。在編譯過程中,不起任何作用。只對Class文件的輸出產生影響,可以說和一起,達到與JSP文件中的相同的效果,因為對編譯過程和Class文件的輸出都會產生影響。

從Servlet源文件到Class的轉變過程

從Servlet源文件到Class的轉變過程

注意:普通Java程序的編譯過程與Servlet完全一樣。
截止現在,從JSP或Servlet源文件到Class文件的過程中中文內容的蛻變歷程是不是昭然若揭了?OK,接下來看看Class文件中的中文又是怎樣被輸出的呢?

Class:輸出字符串

Class文件是Java程序的一種存儲載體。當Class文件被虛擬機執行時,通過readUTF把Class文件中的內容讀入內存中。字符串在內存中表示為Unicode編碼。當要把內存中的內容輸出到別的程序或是外圍設備(如終端)上去時,問題就來了(為了簡單起見,把“別的程序或外圍設備”稱之為“輸出對象”)。

1.如果輸出對象能處理Unicode字符,則一切都很簡單,只要把Unicode字符直接傳給輸出對象即可。

2.事實是,大多數輸出對象不能直接處理Unicode,它們只能處理ISO8859-1和GB2312等。在往輸出對象輸出字符串時,需要做一定的轉換才行。

看看下面的例子,給定一個有四個字符的Unicode字符串“00D6 00D0 00CE 00C4”,如果輸出到只能識別“ISO8859-1”的程序中去,則直接去掉前面的“00”即可得到目的字符串“D6 D0 CE C4”。假如把它們輸出到GB2312的程序中去,得到的結果很可能是一大堆亂碼。因為在GB2312中可能沒有(也有可能有)字符與00D6等字符對應(如果對應不上,將得到0x3f,也就是問號,如果對應上了,由于00D6等字符太靠前,估計也是一些特殊符號,真正的漢字在Unicode中的編碼從 4E00開始)。

同樣的Unicode字符,輸出到不同編碼的對象中去時,結果是不同的。當然,這其中有一種是我們期望的結果。對于能處理中文的輸出對象而言,自然希望輸入的內容(也就是Java程序輸出的內容)是基于GB2312編碼有意義的中文字符串。

以上Servlet源文件的例子而論,“D6 D0 CE C4”應該是我們所想要的。當把“D6 D0 CE C4”輸出到IE中時,用“簡體中文”方式查看,就能看到清楚的“中文”兩個字了。

【編輯推薦】

  1. 淺析Servlet的Web應用程序
  2. 安裝Servlets和JSP
  3. Servlets和JSP的運行環境-JRun
  4. 入門學習Servlets引擎
  5. 淺談Java Servlets與CGI程序
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2009-07-08 11:01:40

Servlet源文件

2013-06-17 17:02:15

Windows PhoWP開發資源文件

2009-07-06 16:18:51

Servlet下載文件

2009-07-06 17:11:38

Servlet文件上傳

2010-02-02 18:02:20

Python源文件

2010-02-03 15:17:58

Python 源文件

2011-06-20 14:18:27

Qt 資源 文件

2009-08-21 16:13:27

C#讀取資源文件

2012-02-03 09:55:06

Delphi

2011-08-15 14:47:28

Cocoa嵌入資源文件

2011-07-14 22:36:37

C++

2009-06-19 16:12:22

Java語言properties

2013-07-30 12:30:57

Windows PhoWindows Pho

2011-01-05 15:15:01

數據庫

2009-06-02 14:21:04

eclipse資源文件eclipse中文

2009-08-28 16:08:28

C#利用資源文件

2009-07-08 09:35:53

Java ServleServlet 3.0

2010-02-24 09:47:05

Python 源文件

2011-07-22 15:10:51

Objective-C 文件

2009-12-28 11:23:38

WPF資源文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区在线观看国产 | av在线伊人 | 免费在线观看成人av | 国产成人精品免费视频大全最热 | 久久五月婷 | 毛片a| 一级黄色毛片免费 | 91精品入口蜜桃 | 国产精品久久久久久久久久免费看 | 国产欧美日韩综合精品一区二区 | www.97zyz.com| 久久久高清 | 亚洲欧美激情四射 | 国产最好的av国产大片 | 免费一区二区三区在线视频 | 久久国产精品久久久久久 | 成年人免费网站 | www.欧美.com| 黄色一级电影在线观看 | 观看av | 国产精品久久久久aaaa | 久久久久高清 | 久久精品91久久久久久再现 | 日本三级日产三级国产三级 | 国产精品精品视频一区二区三区 | 欧美专区在线 | 中文字幕精品一区 | 国产福利在线 | 精品一区二区三区日本 | 成人一区二区视频 | 中文视频在线 | 91久久电影| 无码日韩精品一区二区免费 | 孕妇一级毛片 | 中文字幕欧美一区二区 | 国产乱码精品一区二三赶尸艳谈 | 草久视频| 日韩视频免费看 | 欧美日韩国产传媒 | 亚洲天堂男人的天堂 | 国产在线视频一区二区董小宛性色 |