Webwork Forward 2 html

Web瀏覽器是否能正確顯示一個Web頁通常依賴兩個條件:
一、頁面的編碼(文件編碼).

二、該頁定義的contentType.

其中頁面的編碼是決定性的因素。兩者一致是,瀏覽器會正常顯示內容,否則有可能產生亂碼現像。

如果一個Html文件,文件編碼爲UTF-8。contentType設爲相同。則使用IE或Firefox查看,兩者都會自動選擇正確的編碼形式來解釋。當我將contentType設爲GB2312,以爲會造成亂碼,結果不會。我認爲原因是這樣的:文件編碼起決定作用,加上Utf-8包括了GB該有的字符,所以這種情況是以大的來認識小的。沒問題。(不知是否有理解錯誤 :P)。

上述情況爲使用瀏覽器直接把開網頁文件的結果。當我使用Webwork的Action時,將Html文件作爲結果時(結果類型爲dispatcher),亂碼出現了!文件編碼爲UTF-8,頁面定義的ContentType爲UTF-8。但是偏偏使用IE及FireFox均得到亂碼的結果。鬱悶中用Firefox查看了頁面的屬性,驚奇地發現頁面編碼居然是GB2312。我猜想是Webwork在Dispatch頁面的時候使用了默認的編碼,把本來UTF-8編碼的頁面重新用GB2312編碼一次。於是試着在Action裏面獲得Response並把字符編碼改爲UTF-8。最後發現結果依然一樣。這時,我覺得在Action完成後,Webwork接下來使用了Response,我的設置被重置了。於是決定自已寫一個Servlet,指定字符編碼爲UTF-8,結果直接Forward到我的Html頁面。結果正確了!再查看頁面信息,兩者都是UTF-8了。

平時使用Webwork來Dispatch的都是Jsp,不曾出現過這樣的情況。原因是Jsp仍需要編譯,編譯時會讀取Jsp頁面指定的ContentType來決定Response裏的字符編碼。HTML文件則不一樣。這時只能使用默認編碼。如果我的工程是Gb2312,那根本就不存在剛纔所講的問題的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章