王勇 黎明
摘要:JSP是一種在服務(wù)器端編譯執(zhí)行的Web設(shè)計語言,在使用JSP程序的過程中,常遇到中文亂碼問題,很多人為此頭疼不已,初學(xué)的時候我就深受其害,而且使用平臺不同,中文亂碼問題的解決方法也不同,無形中增加了學(xué)習(xí)JSP的難度。該文對提出了四種解決中文顯示亂碼的解決辦法。
關(guān)鍵詞:字符集;字符編碼;亂碼
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2012)32-7861-02
計算機(jī)中儲存的信息都是用二進(jìn)制數(shù)表示的;而我們在屏幕上看到的英文、漢字等字符是二進(jìn)制數(shù)轉(zhuǎn)換之后的結(jié)果。通俗的說,按照何種規(guī)則將字符存儲在計算機(jī)中,如'a'用什么表示,稱為"編碼";反之,將存儲在計算機(jī)中的二進(jìn)制數(shù)解析顯示出來,稱為"解碼",在解碼過程中,如果使用了錯誤的解碼規(guī)則,則導(dǎo)致'a'解析成'b'或者亂碼。[1]
現(xiàn)在大部分具有國際化特征的軟件核心字符處理都是以Unicode為基礎(chǔ)的。中文字符集有GB2312-80,GBK,Java程序無論是以字符流讀/寫文件,還是從URL連接讀取參數(shù)值,都會有字符編碼的轉(zhuǎn)換。從理論上來說,這些根據(jù)字符集設(shè)置而進(jìn)行的字符轉(zhuǎn)換不應(yīng)該產(chǎn)生太多問題。而事實是由于應(yīng)用程序的實際運行環(huán)境不同,Unicode和各個本地字符集的補充、完善,以及系統(tǒng)或應(yīng)用程序?qū)崿F(xiàn)的不規(guī)范,轉(zhuǎn)碼時出現(xiàn)的問題時時困擾著程序員。該文就顯示中文時出現(xiàn)亂碼的問題的解決辦法作一個簡單的介紹,希望能讓大家從中受益。
1JSP頁面顯示中文亂碼的解決辦法
在JSP頁面中,中文顯示亂碼有兩種情況:一種是HTML中的中文亂碼,另一種是在JSP中動態(tài)輸出的中文亂碼。如果是在JSP頁面中寫入如下頁面指令<%@pagelanguage="java"import="java.util.*" %>,那么在該頁面中如果要顯示中文就一定會出現(xiàn)亂碼,原因在于它沒有在JSP中指定頁面顯示的編碼,消除亂碼的解決方案很簡單,首先需要在建立了一個WEB項目后,把該項目的編碼集先修改成GBK,這樣可以減少很多有關(guān)顯示中文亂碼的問題。然后把page指令改為<%@pagelanguage="java"import="java.util.*"contentType="text/html;charset=GBK"%>即可。原理就是向頁面指定編碼為GBK,那么頁面就會按照此編碼來顯示,于是亂碼消失。在NetBeans下創(chuàng)建JSP頁面時,該page指令一般會自動生成。大家注意在自己修改時不要把contentType類型刪除或者修改錯誤即可。
2URL傳遞參數(shù)中文亂碼的解決辦法
一般情況下在使用get方法提交表單的時候傳遞的參數(shù)如果是中文的話很可能會出現(xiàn)亂碼。在index.jsp頁面中添加一條這樣的語句: