javaweb頁面設置content-type最高優先級

首先,感謝你的閱讀,本人觀點:學習編程是個漫長的過程並不是一時就會很厲害的,關鍵是堅持,快樂地學習,在這裏分享我的一些筆記給你;
  置content-type的最高優先級就是在jsp頁面設置<%@ page contentType=”text/html;charset=gb2312″%>了嗎?還有沒有地方設置,可以覆蓋掉這個設置。曾今試過用過濾器設置contentType,但還是無效,好像優先級沒有jsp頁面設置的高 ———————-

  想過一個笨辦法,就是寫個java程序讀取所有的jsp,讓後把<%@ page contentType=”text/html;charset=gb2312″%>換掉,但這種換法改動文件多,風險也大

  contentType覆蓋的,就是最後一次的設置纔是最終結果。所以就沒有什麼優先級的問題,而是在什麼地方設置是最後一次。個人認爲在filter設置應該可以解決你的問題的。很多人都是用filter來解決編碼的問題的。

  GBK和GB2312編碼的區別:GB2312只是GBK的一個子集,就是說,GBK包括所有的漢字(簡體和繁體),而GB2312只包括簡體。 還有一個要說明,在編碼上沒有優先級的問題,只有你設置的這個編碼在什麼時候起作用。 contentType的charset是指服務器發送給客戶端時的內容編碼,瀏覽器接收到後也是根據這個編碼進行解碼的,如果你設置的是GB2312,那麼如果網頁中有繁體字,那就會出現亂碼,因爲GB2312不可能表示繁體字。

  解決辦法:

  1.對於請求,可以使用過濾器或者在每個JSP/Servlet中設置request.setCharacterEncoding(”UTF-8″)。當然設置成GBK也行,但是從佔用空間來說,還是設置成UTF-8比較好,再說UTF-8是國際標準,可以顯示所有中文(繁體和簡體)。通過這一步,可以確保你提交的數據編碼正確。

  2.在所有的JSP/Servlet中設置contentType=”text/html;charset=UTF-8″或response.setCharacterEncoding(”UTF-8″),當然設置能GBK也行,但是如果那一天想顯示日文,那就還需要換,所以還是建議設置成UTF-8.從而間接實現對瀏覽器編碼的設置。經過這一步的設置可以保證瀏覽器顯示正確。

  3.對於同一個應用,最好統一編碼,推薦爲UTF-8,當然GBK也可以。

  對於第二條,由於你以前設置的是GB2312,爲了能正確的在瀏覽器頁面中顯示繁體字,需要更改JSP頁面的contentType屬性值,當然如果少的話,手動修改,如果很多,可以採用讓電腦幫你完成,但是需要你自己寫一個程序。

  這裏我只給你提供程序的思路,你自己去實現,這個應該來說是最基本的。

  遞歸遍歷你的JSP所在的目錄以及該目錄下的子目錄和JSP文件,對於JSP文件,用BufferedReader封裝FileReader,然後用readline()按行讀取,並用正則表達式進行匹配,public String replaceFirst(”charset=gb2312″,

  “charset=GBK”);然後讀取下一個JSP文件,這個就把所有JSP文件中的contentType=”text/html;charset=gb2312″中的gb2312換成了UTF-8或GBK。

  如果你的JSP文件不超過10000個,那應該幾秒鐘就可完成。

  再補充一下,如果單純採用過濾器,是不行的。如果你採用過濾器,在提交請求之前,你設置的編碼是GBK,這個只是對你提交的數據進行編碼,然後後臺處理你的請求,處理後結果返回,這個時候,你可以對返回的結果進行重編碼,還是在同一個過濾器中,要放在public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)方法之後,但是這個設置只是對服務器的返回數據進行的編碼,當瀏覽器接收到數據之後,解碼的時候仍然是採用你的JSP頁面中的那個GB2312設置,所以,這個時候就是把GBK編碼的數據轉換成了gb2312的數據,對於簡體字,沒有問題,但是對於繁體字,就會出項亂碼。 所以必須修改JSP頁面中的contentType屬性值,修改的辦法,可採用我上面提到的方法。在jsp頁面設置<%@ page contentType=”text/html;charset=gb2312″%>

  contentType的charset是指服務器發送給客戶端時的內容編碼 這個算是最高優先級的 所有你還是得改jsp代碼,沒辦法,

  就寫個程序去讀取文件修改嘛,可以先備份一份所有文件嘛

  頁面定義的編碼格式就是最後調用的了,不可能還有更慢調用的了,只能是替換掉jsp頁面的編碼格式了,要不全用資源文件的形式,當然工作量會更大
從基礎的學習到後面應用提高都非常的系統,無論你是本專業的還是跨專業的,都能有所收穫,參加4個月的達內時光轉眼已逝,伴隨着喜悅,達內給你一個新的平臺,一個嶄新的開始。
(本文由廣州達內http://www.jvtarena.com/java.html爲你分享;)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章