国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

JSP頁面中文亂碼解決方法

2017-04-25 17:36任憲臻梁宏英
關(guān)鍵詞:字符集

任憲臻+梁宏英

摘要:在Java Web應(yīng)用開發(fā)過程中,顯示中文信息頁面時經(jīng)常出現(xiàn)亂碼問題。出現(xiàn)中文亂碼問題的根本主要在于字符編碼,大部分亂碼是因頁面編碼不一致引起。筆者根據(jù)實際應(yīng)用開發(fā)中遇到的問題,對基于Eclipse Java EE IDE for Web Developers(以下簡稱Eclipse EE)+Tomcat8.0開發(fā)中遇到的JSP中文亂碼問題,總結(jié)提出了一種行之有效的解決辦法,可以有效地解決JSP中文亂碼問題。

關(guān)鍵詞:字符集;字符編碼;中文亂碼

中圖分類號:TP31 文獻標(biāo)識碼:A 文章編號:1007-9416(2017)01-0154-01

在Java Web應(yīng)用開發(fā)中,JSP頁面顯示中文信息亂碼一般表現(xiàn)為:JSP編碼亂碼、HTML編碼亂碼、request獲取數(shù)據(jù)亂碼、response輸出信息亂碼等,本文主要針對出現(xiàn)的這些亂碼問題,提出一種行之有效的解決中文顯示亂碼的方法。

1 字符集與字符編碼

字符是各種文字和符號的總稱,包括各個國家的文字、標(biāo)點符號、圖形符號、數(shù)字等,而字符集是多個字符的集合。字符集種類較多,常見字符集有ASCII字符集、GB2312字符集、GBK字符集、GB18030字符集、Unicode字符集等。

計算機要處理各種字符集中的字符,首先需要對字符進行編碼,以便計算機能夠識別、存儲各種字符。所謂字符編碼,是指以二進制數(shù)字對應(yīng)字符集中的字符,即規(guī)定每個字符分別用一個字節(jié)還是多個字節(jié)存儲、用哪些字節(jié)存儲等。因此,對字符進行編碼是信息交流的技術(shù)基礎(chǔ)。字符編碼和字符集不同,一種字符集可以有一種或多種字符編碼,如Unicode字符集有多種編碼方式,如UTF-8、UTF-16、UTF-32等。

2 在Eclipse EE下更改默認(rèn)字符集編碼

為了使開發(fā)的Java Web應(yīng)用能夠具有更好的國際化支持、能夠最大程度地支持中文輸出,在Eclipse EE下編寫文件最好使用UTF-8編碼。在Eclipse EE下修改默認(rèn)字符集編碼的方法如下:

(1)依次單擊Window->Preferences->General->Wordspace,在右側(cè)的Text file encoding處,勾選other選項,選擇UTF-8。

(2)依次單擊Window-> Preferences ->Web->CSS Files/HTML Files/JSP Files(每次選擇一種類型的文件設(shè)置),在右側(cè)的Encoding處,選擇“ISO 10646/Unicode(UTF-8)”。

(3)完成以上操作,單擊“OK”按鈕保存設(shè)置。至此,文件編碼設(shè)置完畢。

3 修改Tomcat8.0的server.xml文件

在tomcat8.0安裝目錄下的conf目錄中,有一個名為server.xml的文件,該文件主要用于對整個容器進行相關(guān)的配置。在server.xml文件中,被稱為連接器的元素主要負(fù)責(zé)接收客戶的請求,以及向客戶端回送響應(yīng)的消息。元素有一個URIEncoding屬性,該屬性用于指定Tomcat服務(wù)器解碼URL的字符編碼。在Tomcat8.0中,如果沒有顯式指定URIEncoding屬性的值,則使用其默認(rèn)值UTF-8(若系統(tǒng)屬性org.apache.catalina.STRICT_SERVLET_COMPLIANCE的被設(shè)置為true,則URIEncoding屬性的默認(rèn)值為ISO-8859-1)。

為了避免中文顯示亂碼,可以為元素的URIEncoding屬性顯示指定值為“UTF-8”,這樣就明確指定Tomcat8服務(wù)器用“UTF-8”對URL進行解碼,添加代碼如下:

指定URIEncoding="UTF-8"后,如果請求的URL里面的參數(shù)也是使用UTF-8編碼,那么即使URL請求的參數(shù)中包含了中文字符,在客戶端顯示中文也不會出現(xiàn)亂碼,但是如果URL里面的參數(shù)不是使用UTF-8編碼(如使用GBK編碼),此時因為請求URL的編碼與Tomcat解碼應(yīng)用的編碼不一致,如果客戶端未對接收的信息進行正確的編碼轉(zhuǎn)換,可能就會發(fā)生中文顯示亂碼問題。因此,為了避免亂碼,請求URL的編碼方式盡量要與tomcat的解碼方式保持一致。

但是麻煩的是,沒有規(guī)范明確指定URL采用的具體的編碼方法,而是交給應(yīng)用程序(瀏覽器)自己決定,這就導(dǎo)致“URL編碼”成為了一個混亂的領(lǐng)域。目前很多瀏覽器使用UTF-8作為URL的默認(rèn)編碼,也有瀏覽器使用“ISO-8859-1”編碼URL,或者使用當(dāng)前頁面的編碼。為了使請求URL的編碼方式與Tomcat服務(wù)器的解碼方式保持一致,可以指定瀏覽器發(fā)送請求信息時的編碼,如在IE11中,可以指定以UTF-8編碼發(fā)送URL路徑,如圖1所示。

4 編碼設(shè)置總結(jié)

經(jīng)過上述設(shè)置,JSP中文亂碼問題基本可以得到解決,但是有以下幾點在實際應(yīng)用中還需要注意:

(1)Tomcat配置文件Server.xml中URIEncoding="UTF-8" 設(shè)置只對get類型的請求有效,對post請求類型無效。所以即使配置了URIEncoding="UTF-8",在服務(wù)器端接收到的post類型的請求參數(shù)編碼仍然為“ISO-8859-1”,而不是“UTF-8”。

(2)使用post請求時,為了避免中文亂碼顯示,可以在獲取請求參數(shù)值前,首先設(shè)置request對象和response對象的字符編碼。

<% request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");%>

(3)如果JSP程序中使用了Java Bean的屬性設(shè)置語句,那么上述2)中的字符編碼設(shè)置一定要放置在Java Bean屬性設(shè)置之前。

<%request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");%>

參考文獻

[1]宋智軍,邱仲潘.JSP從入門到精通.電子工業(yè)出版社,2012.

[2]何福貴,張海,張力展,著.JSP開發(fā)案例教程.機械工業(yè)出版社,2013.

[3]耿祥義,張躍平.JSP基礎(chǔ)教程.清華大學(xué)出版社,2009.

猜你喜歡
字符集
ORACLE字符集問題的分析
PHP+MySQL網(wǎng)站中關(guān)于上傳中文文件名照片亂碼問題的探討
ORACLE數(shù)據(jù)庫字符集問題及解決方法
醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)中文亂碼的解決技術(shù)
FilterFA:一種基于字符集規(guī)約的模式串匹配算法
.Net框架聯(lián)合Oracle字符集問題研究
一種基于分段式字符集的彩虹表明文生成方式?
不依賴字符集的數(shù)據(jù)庫非標(biāo)字段檢測方法
PHP與MySQL Web應(yīng)用平臺中文亂碼問題研究
伊吾县| 丰县| 瓮安县| 鞍山市| 博罗县| 当雄县| 铜梁县| 铜鼓县| 女性| 老河口市| 抚州市| 孟村| 常州市| 桂林市| 延长县| 买车| 金门县| 耒阳市| 富平县| 富蕴县| 安宁市| 荔浦县| 普宁市| 邛崃市| 东阿县| 云安县| 台前县| 建阳市| 灵丘县| 永州市| 新乡市| 大厂| 登封市| 呼图壁县| 鹤山市| 吐鲁番市| 茂名市| 夏河县| 杭锦旗| 开原市| 莒南县|