JSP的中文問題再問(一些理論上的探討)

skyyjck發表於2004-11-11
有一個疑問,關於JSP檔案charset屬性:

利用下列程式碼可以設定一個JSP檔案的charset屬性

<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<p class="indent">


任何原始碼(包括JSP和JAVA原始檔),如果能夠被正確地編譯為class(比如,在中文作業系統,用javac編譯的時候,使用GBK encoding,就能正確將JAVA原始碼中的中文轉換為unicode儲存到class檔案中),在輸出的時候,如果是中文系統,預設使用GBK編碼輸出,也能正確顯示中文。

對JSP,需要額外的一步,就是將JSP編譯為JAVA原始碼。我的疑問就是“應用伺服器是否是根據JSP檔案的charset屬性來將JSP編譯為JAVA原始碼?”我原本認為,這個設定,應該是應用伺服器響應客戶端的時候所輸出的編碼,而不應該是用來編譯JSP的編碼,但Tomcat似乎是根據這個charset來進行編譯的。這是Tomcat所特有的,還是所有的應用伺服器都是這樣的呢?

Tomcat在把JSP編譯為JAVA原始檔的時候,預設使用的是UTF-8編碼而不是作業系統的預設編碼,因為我的作業系統是中文的,作業系統預設編碼是GBK。

為了在JSP中使用中文,我想配置Tomcat在編譯JSP的時候使用GBK編碼,查閱Tomcat文件,可以配置javaEncoding引數的值,但是似乎這個配置不起作用。

也就是說,我必須設定charset屬性為GBK或gb2312,才能正確處理中文問題,但我想使用UTF-8編碼來輸出中文,Tomcat卻用UTF-8來編譯我的JSP檔案,最後的結果就是中文不能正確顯示,如何才能解決這個問題呢?

我使用的是Tomcat4.1,希望有經驗的朋友賜教。

相關文章