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

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

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

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

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

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



    本文原創,轉載請注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢帆影JavaEE技術博客)
        

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

    評論:
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題[未登錄] 2009-04-09 14:00 | jarry
    如果沒要求,通常都設置為UTF-8  回復  更多評論
      
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題 2009-04-09 23:59 | bera
    從數據庫到代碼到配置文件到頁面全部UTF8就完事了  回復  更多評論
      
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題 2009-04-23 17:47 | asda
    asdasda  回復  更多評論
      
    # re: 也談Struts+Ajax+JSP中的中文亂碼問題[未登錄] 2009-08-02 12:45 | bill
    我們都用utf-8,編碼過濾可以用filter。  回復  更多評論
      
    主站蜘蛛池模板: 亚洲AV无码国产精品色午友在线 | 中文字幕亚洲激情| 国产AV无码专区亚洲AV蜜芽 | 亚洲av无码一区二区三区乱子伦| 人妻18毛片a级毛片免费看| 又黄又爽的视频免费看| 五月天婷婷免费视频| 在线A亚洲老鸭窝天堂| 国内精品免费视频精选在线观看| 亚洲人成无码网站| 午夜精品免费在线观看| 亚洲国产成人手机在线电影bd| 色播精品免费小视频| 亚洲国产欧洲综合997久久| 国产一级淫片a免费播放口之| 一级毛片免费播放男男| 成人午夜亚洲精品无码网站| 久久99青青精品免费观看| 亚洲三级视频在线观看| 免费精品一区二区三区在线观看| 污视频网站在线免费看| 亚洲AV永久无码精品水牛影视| 曰批视频免费40分钟试看天天| 亚洲1区1区3区4区产品乱码芒果 | 亚洲免费无码在线| 亚洲人成网址在线观看| 噼里啪啦电影在线观看免费高清| 亚洲国产成人久久精品大牛影视 | 18禁黄网站禁片免费观看不卡| 亚洲首页国产精品丝袜| 亚洲AV日韩精品一区二区三区| 永久免费av无码网站yy| 亚洲中文字幕久久精品无码A| 日本中文一区二区三区亚洲| 国产精品免费看久久久| 亚洲色大成网站www永久男同| 亚洲码国产精品高潮在线| 最近中文字幕免费mv视频7| www.xxxx.com日本免费| 亚洲精品综合在线影院| 亚洲国产精品成人久久|