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

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

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

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    說明:下文涉及的內容只限于對前端jsp和后臺servlet的代碼修改,不涉及Web容器和數據庫的相關修改。
    我的測試環境是:英文XP操作系統,容器采用Tomcat6,前臺是jsp,后臺Servlet,Ajax框架采用prototype1.6.0

    Web編程中前后端亂碼問題發生的根源
    從前端jsp到后臺的Servlet,中間傳輸過程中的默認編碼方式是ISO-8859-1,這種編碼方式是西歐字符集,包括英語,德語,丹麥語,芬蘭語等,其它語言如中文日文等是不兼容的,如不經轉換或是設置直接在Servlet中用request.getParameter(paramName)這種方式直接拿出來中文部分就會得到亂碼,但英語,字母,數字組合成的字符串是不會變成亂碼的。

    常見的編碼解決亂碼問題的方式有
    • new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"頁面字符集");
    • HttpServletRequest.setCharacterEncoding("頁面字符集");
    • URLDecoder.decode(str, "UTF-8");
    它們各自用在不同的場合,這里的頁面字符集指GBK,GB2312,UTF-8等,它們通常和jsp頁面設定的字符集(charset)一致。

    如果是將form通過post方式提交,在servlet的doPost函數開頭(對于Struts寫在execute函數開頭)寫上request.setCharacterEncoding("jsp網頁字符集")就可以直接用request.getParameter(paramName)直接得到文字,不需要經過再轉碼。這里需要注意的是form的action如果不直接寫成post的話,是會以get方式提交,這時request.setCharacterEncoding就會失效。

    如果不管是post還是get方式,想做一個通用方案,則可以通過new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"jsp網頁編碼方式")得到轉碼后正常的文字,這種方式只要知道網頁的字符集,幾乎都能還原成正確的文字,適用性很廣,在Servlet和Action中很常見。

    如果是Ajax提交方式,則在servlet或是action中書寫request.setCharacterEncoding("jsp網頁字符集")是沒有效果的,經過對提交的URL用一次javascript的encodeURI函數編碼后,用 new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"jsp網頁字符集")可以得到正確的文字。但如果不用encodeURI函數處理提交的url則不會正確的文字。

    Ajax提交中文的另一種方式可以用javascript的encodeURI函數對提交的URL進行兩次編碼,而后臺采用URLDecoder.decode(request.getParameter(paramName), "UTF-8")得到正確的文字。

    上面兩種方式都借助了avascript的encodeURI函數的幫助,它能將字符串進行utf-8編碼,其中,第二種方式確定性很高,推薦。

    具體方式請參考下面給出的例程,里面含有12個例子,分別對應了多種情況:
    http://www.tkk7.com/Files/heyang/DisorderCode2011-01-31.zip



    參考文章:
    深入淺出 web 編碼(轉載整理)
    http://www.tkk7.com/heyang/archive/2011/01/26/343570.html
    posted on 2011-01-30 18:07 何楊 閱讀(1841) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲av日韩专区在线观看| 亚洲天堂2017无码中文| 亚洲性线免费观看视频成熟| 亚洲第一AAAAA片| 很黄很污的网站免费| 亚洲国产精品无码专区影院| 性xxxx视频免费播放直播| 亚洲av无码乱码国产精品| 97在线视频免费公开观看| 国产v片免费播放| 黄色片网站在线免费观看| 精品亚洲一区二区三区在线观看| 处破痛哭A√18成年片免费| 亚洲中文字幕日本无线码| 国产成人精品免费视| 国产精品亚洲专区在线观看| 日韩免费高清一级毛片在线| 污污视频免费观看网站| 亚洲欧洲日产国码无码久久99| 亚洲色大成网站WWW国产| 国产嫩草影院精品免费网址| 亚洲国产综合91精品麻豆| 久久永久免费人妻精品| 久久精品国产亚洲AV久| 国产乱子影视频上线免费观看| 亚洲AV无码成人精品区在线观看 | 日韩av无码成人无码免费| 亚洲性色高清完整版在线观看| 黄桃AV无码免费一区二区三区| 最新欧洲大片免费在线| 亚洲午夜久久久久妓女影院| 午夜精品免费在线观看 | 好男人看视频免费2019中文| 亚洲a∨无码一区二区| 亚洲午夜久久久影院伊人| 又黄又爽又成人免费视频| 一级一片免费视频播放| 又大又粗又爽a级毛片免费看| 波多野结衣亚洲一级| 亚洲成A∨人片天堂网无码| 色欲色香天天天综合网站免费 |