<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-42  評(píng)論-578  文章-1  trackbacks-0
            近來,在開始做的NewsMS系統(tǒng)中,要整合Ajax,卻發(fā)覺問題多多。最煩人的是中文亂碼問題。以前,在純Struts2+JSP時(shí),是沒有問題的,而一旦加入Ajax就不一樣了(我用的JS庫是Jquery)。弄了很長一段時(shí)間,還是解決不了。到網(wǎng)上找,有許多文章介紹的方法是:在Ajax中encode一次,而在服務(wù)器端decode一次,有的還夸張,要通過雙重encode和decode來解決中文提交問題。這樣方法應(yīng)該可以解決問題的,但如果提交的表單字段比較多時(shí),那不是要encode和decode許多次,那可能會(huì)使人崩潰掉。
           我的測試?yán)邮潜韱翁峤坏睦樱謨煞N方案:一種是JSP直接提交給Struts,一種是JSP通過Ajax提交給Struts。
            在看本文前,大家應(yīng)該知道的處理中文亂問題的方法:
            在Struts.xml中配置:
    <constant name="struts.i18n.encoding" value="GBK"/>
            當(dāng)然,我們過去也習(xí)慣設(shè)置JSP頁面的編碼為:
    <%@ page language="java" contentType="text/html; charset=GBK"
        pageEncoding
    ="GBK"
    %>

    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
            當(dāng)然上面的GBK也可以是GB18030,GB2312。
            我們暫且把上面的兩種的編碼設(shè)置稱為Struts端編碼設(shè)置和JSP端編碼設(shè)置。我們來開始我們的探索和測試吧!
    1、Struts+JSP時(shí),
        Struts設(shè)置成GBK,而而JSP端設(shè)置成GBK,GB2312,GB18030     --> 沒問題
        Struts設(shè)置成GBK,而而JSP端設(shè)置成UTF-
    8                    --> 亂碼
        Struts設(shè)置成UTF-
    8,而JSP端設(shè)置成GBK,GB2312,GB18030    --> 亂碼
        Struts設(shè)置成UTF-
    8,而JSP設(shè)置成UTF-8                   -->沒問題
    2、Struts+Ajax+JSP時(shí),
        Struts設(shè)置成GBK,而而JSP設(shè)置成GBK,GB2312,GB18030    --> 亂碼
        Struts設(shè)置成GBK,而而JSP設(shè)置成UTF-
    8                    -->亂碼
        Struts設(shè)置成UTF-
    8,而JSP端GBK,GB2312,GB18030        --> 沒問題
        Struts設(shè)置成UTF-
    8,而JSP設(shè)置成UTF-8                   -->沒問題

            看看我們的測試結(jié)果,想想,得出結(jié)論:
             結(jié)論一、如果Struts端設(shè)置為GBK,則它要求傳進(jìn)去的內(nèi)容編碼一定要是GBK或其它的國標(biāo)編碼;如果Struts端設(shè)置為UTF-8,則它也一定要求傳進(jìn)去的是UTF-8。
            結(jié)論二、JSP直接傳給Struts和JSP通過Ajax傳給Struts是不同的,Ajax的post方法(不推薦用get方法)默認(rèn)傳送的編碼方式是UTF-8,而JS能自動(dòng)把客戶端的GB系列的編碼轉(zhuǎn)成UTF-8再發(fā)送(IE中是這樣,其它瀏覽器不清楚)。這樣一來,最終傳給Struts端一定是UTF-8,而如果Struts端設(shè)置成GBK或其它的GB編碼的話,就會(huì)出現(xiàn)亂碼。
            所以,比較合理的編碼設(shè)置是:Struts端和JSP端都統(tǒng)一設(shè)置成UTF-8。這對(duì)于Struts+JSP的整合方案和Struts+Ajax+JSP的整合方案都適用。



    本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
        

    posted on 2009-04-09 13:38 心夢(mèng)帆影 閱讀(2817) 評(píng)論(4)  編輯  收藏 所屬分類: Struts2.xJquery

    評(píng)論:
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題[未登錄] 2009-04-09 14:00 | jarry
    如果沒要求,通常都設(shè)置為UTF-8  回復(fù)  更多評(píng)論
      
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題 2009-04-09 23:59 | bera
    從數(shù)據(jù)庫到代碼到配置文件到頁面全部UTF8就完事了  回復(fù)  更多評(píng)論
      
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題 2009-04-23 17:47 | asda
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題[未登錄] 2009-08-02 12:45 | bill
    我們都用utf-8,編碼過濾可以用filter。  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲国产精品无码中文lv| 色屁屁在线观看视频免费| 成人啪精品视频免费网站| 国产一级高清免费观看| 四虎影视在线永久免费观看| 桃子视频在线观看高清免费完整| 好吊妞在线成人免费| 成人免费夜片在线观看| 亚洲精品线在线观看| 国产成人啪精品视频免费网| a级毛片毛片免费观看久潮| 亚洲天堂电影在线观看| 亚洲av手机在线观看| 精品熟女少妇av免费久久| 亚洲AV日韩AV一区二区三曲 | 日本免费大黄在线观看| 精品国产成人亚洲午夜福利| 综合亚洲伊人午夜网| 中国在线观看免费国语版| 日韩免费高清播放器| 亚洲中文字幕无码mv| 久久精品视频亚洲| 国产免费观看黄AV片| 蜜桃AV无码免费看永久| 亚洲免费在线观看| 亚洲AV无码之国产精品| 亚洲国产二区三区久久| 亚洲精品456播放| 妞干网免费视频观看| 99精品免费观看| 免费看男人j放进女人j免费看| 免费无码精品黄AV电影| 亚洲国产精品一区二区成人片国内| 国产午夜精品久久久久免费视| 亚洲欧美国产欧美色欲| 亚洲黄色网址大全| 亚洲综合av永久无码精品一区二区| 日韩吃奶摸下AA片免费观看| 日韩免费人妻AV无码专区蜜桃 | 国产精品99精品久久免费| 美女羞羞视频免费网站|