疑惑:java中文問題在各種測試中的結果

jdonnew發表於2007-01-16
測試環境:
作業系統:XP / Java JDK:1.4.2 / Tomcat 4.0
執行方式:
前臺:HTML,透過AJAX技術呼叫Servlet,url中帶中文引數;
後臺:Servlet類,接收中文引數進行編碼轉換,再輸出到前臺。(為測試:後臺也System.out.println()出來)

第一種:GET方式傳遞引數
var url = "PostServlet?title=中文get";
WEB容器預設採用ISO-8859-1編碼格式接受傳入的值。
1,若在Servlet中設定:response.setContentType("text/html; charset=GBK");按GBK編碼傳送到客戶端,則不會亂碼。
2,若沒有上面一句,預設按ISO-8859-1編碼傳送到客戶端,則亂碼。
3,後臺System.out.println()若要輸出中文,則需要手工程式碼將ISO編碼轉換為GBK編碼。

第二種:POST方式傳遞引數
var url = PostServlet";
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); //xmlHttp為XMLHttpRequest物件,具體宣告定義略
xmlHttp.send("title=中文post");

這裡就有一個問題,WEB容器是以什麼編碼格式接受傳入的值的呢?
因為遇到問題只能先給出測試結果。
1,若在Servlet中設定:response.setContentType("text/html; charset=GBK");客戶端亂碼。
2,若沒有上面一句,客戶端不會亂碼。(與GET方式剛好相反)
3,後臺System.out.println()若要輸出中文,則需要手工程式碼將ISO編碼轉換為UTF-8編碼。

希望得到高手指點哦,先謝。。

[該貼被jdonnew於2007-01-17 13:44修改過]

相關文章