• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    JSP頁(yè)面中文亂碼解決方法

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

    任憲臻+梁宏英

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

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

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

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

    1 字符集與字符編碼

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

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

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

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

    (1)依次單擊Window->Preferences->General->Wordspace,在右側(cè)的Text file encoding處,勾選other選項(xiàng),選擇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目錄中,有一個(gè)名為server.xml的文件,該文件主要用于對(duì)整個(gè)容器進(jìn)行相關(guān)的配置。在server.xml文件中,被稱為連接器的元素主要負(fù)責(zé)接收客戶的請(qǐng)求,以及向客戶端回送響應(yīng)的消息。元素有一個(gè)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”對(duì)URL進(jìn)行解碼,添加代碼如下:

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

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

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

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

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

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

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

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

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

    參考文獻(xiàn)

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

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

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

    猜你喜歡
    字符集
    MySQL數(shù)據(jù)庫(kù)字符集的問題研究
    ORACLE字符集問題的分析
    ORACLE數(shù)據(jù)庫(kù)字符集問題及解決方法
    醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù)中文亂碼的解決技術(shù)
    FilterFA:一種基于字符集規(guī)約的模式串匹配算法
    .Net框架聯(lián)合Oracle字符集問題研究
    一種基于分段式字符集的彩虹表明文生成方式?
    字符集研究
    淺析亂碼的產(chǎn)生原因及消除技術(shù)
    不依賴字符集的數(shù)據(jù)庫(kù)非標(biāo)字段檢測(cè)方法
    遂昌县| 乌鲁木齐市| 庆云县| 岳阳市| 临猗县| 盘山县| 柳江县| 孟村| 水城县| 石景山区| 蓬莱市| 特克斯县| 都昌县| 西昌市| 南木林县| 天气| 莫力| 新丰县| 璧山县| 尖扎县| 盐山县| 乡宁县| 梨树县| 阿拉善盟| 定南县| 潜江市| 大新县| 德庆县| 清新县| 昌邑市| 南江县| 洛阳市| 连云港市| 迁安市| 东乡族自治县| 灵台县| 浏阳市| 漳浦县| 临城县| 文山县| 沂南县|