- 經常遇到關於JSP頁面亂碼的問題,在網上也查了相關的帖子,故在此做個關於JSP頁面亂碼處理的總結,和大家一同分享。
- 首先先介紹幾個關於頁面編碼參數設置的屬性。
- < META http-equiv = Content -Type content = "text/html; charset=gb2312" >
- 這句話的意思是你瀏覽器查看網頁的編碼方式爲中文,類似於瀏覽器上查看選項的字符編碼設置,如果你查看中文的頁面,你設置爲UTF8查看的話,就會顯示爲亂碼或者說是問號。所以這個屬性只是用來設置瀏覽器顯示數據的字符編碼。
- 下面我們具體說一下這個屬性
- META,網頁Html語言裏Head區重要標籤之一
- HTTP-EQUIV類似於HTTP的頭部協議,它迴應給瀏覽器一些有用的信息,以幫助正確和精確地顯示網頁內容。常用的HTTP-EQUIV類型有:
- Content-Type和Content-Language (顯示字符集的設定)
- 說明:設定頁面使用的字符集,用以說明主頁製作所使用的文字以及語言,瀏覽器會根據此來調用相應的字符集顯示page內容。
- < Meta http-equiv = "Content-Type" Content = "text/html; Charset=gb2312" >
- 該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等文檔類型
- 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等語言代碼。
- Note:因爲我們的瀏覽器一般都指定爲中文字符編碼查看,所以這句就不用加在你的頁面當中,你加了也可以更強調也好。
- 2。page contentType — 指定的是JSP頁最終 Browser(客戶端)所見到的網頁內容的編碼.其實用在容器中就是說把JSP頁面輸出爲HTML頁面採用的編碼方式。要把這個與第一個屬性有所區別。
- 3。page pageEncoding — 指定JSP解碼時所用的編碼
- 如 果你的是 WIN98, 或 ME 的NOTEPAD記事本編寫JSP, 就一定是常用的是Big5 或 gb2312, 如果是 用 WIN2k winXP的NOTEPAD時, SAVE時就可以選擇不同的編,碼, 包括 ANSI(BIG5/GB2312)或 UTF- 8 或 UNIONCODE(估是 UCS 16).
- 因爲 JSP要經過 兩次的”編碼”,
- 第一階段會用 pageEncoding, 第二階段會用 utf-8 至utf-8, 第三階段就是由TOMCAT出來的網頁, 用的是contentType.
- 階 段一是 JSPC的 JSP至JAVA(.java)原碼的”翻譯”, 它會跟據 pageEncoding 的設定讀取JSP. 結果是由指定的 pageEncoding(utf-8,Big5,gb2312)的JSP 翻譯成統一的utf-8 JAVA原碼(.java). 如果 pageEncoding設定錯了, 或沒設定(預設ISO8859-1), 出來的 在這個階段 就已是中文亂碼.
- 階段二是由 JAVAC的JAVA原碼至JAVA BYTECODE的編譯. 不論JSP的編寫時是用(utf-8,Big5,gb2312),經過階段一的結果全都是utf-8的ENCODING的JAVA原碼.
- JAVAC 用 utf-8的ENCODING讀取AVA原碼, 編譯成字符串是 utf-8 ENCODING的二進制碼(.class). 這 是 JAVA VIRTUAL MACNHINE對常數字符串在 二進制碼(JAVA BYTECODE)內表達的規範.階段三是TOMCAT(或其的 application container)加載和執行階段二得來的JAVA二進制碼, 輸出的結果( 也就是BROWSER(客戶端))
- 見到的. 這時一早隱藏在階段一和二的參數contentType, 就發揮了功效. (見 階段一的 ).
- 4。request.setCharacterEncoding("gb2312")指定對請求採用中文編碼發送。瀏覽器默認的是採取UTF8編碼方式發送請求,不能識別中文字符。
- 5。response.setContentType(”text/html; charset = gb2312 ″);設置響應時發送數據的編碼方式。
- 總結了一大堆,現在來說下怎麼解決JSP頁面中文問題
- 一般性的解決,只要在每個JSP頁面開始處加入下面三行代碼即可:
- 爲了讓JSP編譯器能正確地解碼我們的含有中文字符的JSP文件
- < %@ page pageEncoding = "gb2312" % >
- 保證JSP向客戶端輸出時是採用中文編碼方式輸出
- < %@ page contentType = "text/html;charset=GB2312" % >
- 爲了讓JSP能正確獲得傳入的參數
- < %request.setCharacterEncoding("gb2312");% >
- 對於SERVLET只要在最前面加上這句即可:
- 爲了讓JSP響應按照正確的編碼格式
- response.setContentType(”text/html;
charset
=
gb2312
″);
JSP 頁面中文亂碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Java實現抓取在線視頻並提取視頻語音爲文本
原創
2024-05-22 11:56:46
Python實現大麥網搶票的四大關鍵技術點解析
原創
2024-05-23 00:18:04
H5按需加載探索——Webpack模塊化示例
原創
2024-05-22 11:10:06
一鍵自動化博客發佈工具,用過的人都說好(頭條篇)
原創
2024-05-21 21:38:49
Selenium與PhantomJS:自動化測試與網頁爬蟲的完美結合
原創
2024-05-22 00:09:17
Spring項目中使用NIO並行調用http接口指南
原創
2024-05-23 11:10:25
線程池那些坑爹的參數-核心線程數&最大線程數&工作隊列
原創
2024-05-21 23:11:06
IO密集型場景CompletableFuture使用的陷阱
原創
2024-05-21 23:11:05
【開啓報名】開源之夏2024精彩繼續!Apache Linkis項目課題正式發佈
微衆開源
2024-05-21 21:38:53
DevExpress WinForms中文教程 - HTML & CSS支持的實戰應用(二)
原創
2024-05-23 12:20:11
一鍵自動化博客發佈工具,用過的人都說好(知乎篇)
原創
2024-05-22 21:38:51
VLOOK™讓Markdown「得寸進遲」系列:表格內容助手(複製/十字光標/換行/畫中畫)
原創
2024-05-22 21:31:05
界面組件DevExpress WPF v23.2 - 富文本編輯器、電子表格組件升級
原創
2024-05-22 12:19:47
大型前端應用如何做系統融合?
原創
2024-05-22 11:56:43