JSP 頁面中文亂碼

  1. 經常遇到關於JSP頁面亂碼的問題,在網上也查了相關的帖子,故在此做個關於JSP頁面亂碼處理的總結,和大家一同分享。   
  2. 首先先介紹幾個關於頁面編碼參數設置的屬性。   
  3.   
  4. < META   http-equiv = Content -Type  content = "text/html; charset=gb2312" >     
  5. 這句話的意思是你瀏覽器查看網頁的編碼方式爲中文,類似於瀏覽器上查看選項的字符編碼設置,如果你查看中文的頁面,你設置爲UTF8查看的話,就會顯示爲亂碼或者說是問號。所以這個屬性只是用來設置瀏覽器顯示數據的字符編碼。   
  6. 下面我們具體說一下這個屬性   
  7. META,網頁Html語言裏Head區重要標籤之一   
  8. HTTP-EQUIV類似於HTTP的頭部協議,它迴應給瀏覽器一些有用的信息,以幫助正確和精確地顯示網頁內容。常用的HTTP-EQUIV類型有:   
  9. Content-Type和Content-Language (顯示字符集的設定)   
  10. 說明:設定頁面使用的字符集,用以說明主頁製作所使用的文字以及語言,瀏覽器會根據此來調用相應的字符集顯示page內容。   
  11. < Meta   http-equiv = "Content-Type"   Content = "text/html; Charset=gb2312" >   
  12. 該META標籤定義了HTML頁面所使用的字符集爲GB2132,就是國標漢字碼。如果將其中的“ charset = GB2312 ” 替換成“BIG5”,則該頁面所用的字符集就是繁體中文Big5碼。當你瀏覽一些國外的站點時,IE瀏覽器會提示你要正確顯示該頁面需要下載xx語支持。 這個功能就是通過讀取HTML頁面META標籤的Content-Type屬性而得知需要使用哪種字符集顯示該頁面的。如果系統裏沒有裝相應的字符集,則 IE就提示下載。其他的語言也對應不同的charset,比如日文的字符集是“iso-2022-jp ”,韓文的是“ks_c_5601”。 Content-Type的Content還可以是:text/xml等文檔類型   
  13. Charset 選項:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac- roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso- 2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符 集;Content-Language的Content還可以是:EN、FR等語言代碼。   
  14. Note:因爲我們的瀏覽器一般都指定爲中文字符編碼查看,所以這句就不用加在你的頁面當中,你加了也可以更強調也好。   
  15.   
  16. 2。page contentType — 指定的是JSP頁最終 Browser(客戶端)所見到的網頁內容的編碼.其實用在容器中就是說把JSP頁面輸出爲HTML頁面採用的編碼方式。要把這個與第一個屬性有所區別。   
  17. 3。page pageEncoding — 指定JSP解碼時所用的編碼   
  18. 如 果你的是 WIN98, 或 ME 的NOTEPAD記事本編寫JSP, 就一定是常用的是Big5 或 gb2312, 如果是 用 WIN2k winXP的NOTEPAD時, SAVE時就可以選擇不同的編,碼, 包括 ANSI(BIG5/GB2312)或 UTF- 8 或 UNIONCODE(估是 UCS 16).   
  19. 因爲 JSP要經過 兩次的”編碼”,   
  20. 第一階段會用 pageEncoding, 第二階段會用 utf-8 至utf-8, 第三階段就是由TOMCAT出來的網頁, 用的是contentType.   
  21. 階 段一是 JSPC的 JSP至JAVA(.java)原碼的”翻譯”, 它會跟據 pageEncoding 的設定讀取JSP. 結果是由指定的 pageEncoding(utf-8,Big5,gb2312)的JSP 翻譯成統一的utf-8 JAVA原碼(.java). 如果 pageEncoding設定錯了, 或沒設定(預設ISO8859-1), 出來的 在這個階段 就已是中文亂碼.   
  22. 階段二是由 JAVAC的JAVA原碼至JAVA BYTECODE的編譯. 不論JSP的編寫時是用(utf-8,Big5,gb2312),經過階段一的結果全都是utf-8的ENCODING的JAVA原碼.   
  23. JAVAC 用 utf-8的ENCODING讀取AVA原碼, 編譯成字符串是 utf-8 ENCODING的二進制碼(.class). 這 是 JAVA VIRTUAL MACNHINE對常數字符串在 二進制碼(JAVA BYTECODE)內表達的規範.階段三是TOMCAT(或其的 application container)加載和執行階段二得來的JAVA二進制碼, 輸出的結果( 也就是BROWSER(客戶端))   
  24. 見到的. 這時一早隱藏在階段一和二的參數contentType, 就發揮了功效. (見 階段一的 ).   
  25. 4。request.setCharacterEncoding("gb2312")指定對請求採用中文編碼發送。瀏覽器默認的是採取UTF8編碼方式發送請求,不能識別中文字符。   
  26. 5。response.setContentType(”text/html;  charset = gb2312 ″);設置響應時發送數據的編碼方式。   
  27.   
  28. 總結了一大堆,現在來說下怎麼解決JSP頁面中文問題   
  29. 一般性的解決,只要在每個JSP頁面開始處加入下面三行代碼即可:   
  30.   
  31. 爲了讓JSP編譯器能正確地解碼我們的含有中文字符的JSP文件   
  32. < %@ page  pageEncoding = "gb2312" % >   
  33.   
  34. 保證JSP向客戶端輸出時是採用中文編碼方式輸出   
  35. < %@ page  contentType = "text/html;charset=GB2312" % >   
  36.   
  37. 爲了讓JSP能正確獲得傳入的參數   
  38. < %request.setCharacterEncoding("gb2312");% >   
  39.   
  40. 對於SERVLET只要在最前面加上這句即可:   
  41. 爲了讓JSP響應按照正確的編碼格式   
  42. response.setContentType(”text/html;  charset = gb2312 ″); 
發佈了60 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章