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

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

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

    隨筆-23  評論-0  文章-5  trackbacks-0

    今天遇到調用encodeURL調用二次的疑問,雖然之前知道要調用二次,但是具體不是太清楚里面具體的運行過程,這是轉載的這個寫的比較詳細,把整個運行過程詳細解讀了一下,非常不錯所以轉載過了供其他人分享。
    .encodeURL函數主要是來對URI來做轉碼,它默認是采用的UTF-8的編碼.

    . UTF-8編碼的格式:一個漢字來三個字節構成,每一個字節會轉換成16進制的編碼,同時添加上%號.

    假設頁面端輸入的中文是一個“中”,按照下面步驟進行解碼

    1.第一次encodeURI,按照utf-8方式獲取字節數組變成[-28,-72-83],對字節碼數組進行遍歷,把每個字節轉化成對應的16進制數,這樣就變成了[E4,B8,AD],最后變成[%E4,%B8,%AD]  此時已經沒有了多字節字符,全部是單字節字符。

    2、第二次encodeURI,進行編碼,會把%看成一個轉義字符,并不編碼%以后字符,會把%編碼成%25.把數組最后變成[%25E4,%25B8,%25AD]然后就把處理后的數據[%25E4,%25B8,%25AD]發往服務器端,
    當應用服務器調用getParameter方法,getParameter方法會去向應用服務器請求參數
    應用服務器最初獲得的就是發送來的
    [%25E4,%25B8,%25AD],應用服務器會對這個數據進行URLdecode操作,應用服務器進行解碼的這一次,不管是按照UTF-8,還是GBK,還是ISO-8859,,都能得到[%E4,%B8,%AD],因為都會把%25解析成%.并把這個值返回給getParameter方法

    3\、再用UTF-8解碼一次,就得到"中"了。

    想想看,如果不編碼兩次,當服務器自動解碼的時候,假如是按照ISO-8859去解碼UTF-8編碼的東西,就是會出現亂碼。

    JS:

    1. document.authorityForm.action = basePath3+"User_viewUser.do?id="+id+"&roleName="+encodeURI(encodeURI(roleName))+"&roleType="+roleType;  


    JAVA后臺:
       

    1. roleName = java.net.URLDecoder.decode(getRequest().getParameter("roleName"),"UTF-8");  
    posted on 2015-08-18 11:20 ForMeBlog 閱讀(421) 評論(0)  編輯  收藏 所屬分類: JSP基礎類
    主站蜘蛛池模板: 免费一看一级毛片全播放| 亚洲AV无码一区二区乱子伦| eeuss影院ss奇兵免费com| 亚洲AV无码国产在丝袜线观看| 91精品国产免费久久久久久青草| 久久亚洲AV成人无码国产电影 | 亚洲av日韩av综合| 免费无遮挡无码永久在线观看视频| 国产区在线免费观看| 亚洲电影唐人社一区二区| 日本大片在线看黄a∨免费 | 一二三四免费观看在线视频中文版 | 自拍偷自拍亚洲精品播放| 亚洲一区二区女搞男| 野花高清在线电影观看免费视频| 欧亚一级毛片免费看| 亚洲最大黄色网址| 亚洲中文字幕无码不卡电影| 四虎国产精品免费久久| 久久免费视频一区| 亚洲成a人片在线不卡一二三区 | 久久精品国产亚洲av水果派| 日韩一区二区三区免费体验| 99久久免费观看| 一本一道dvd在线观看免费视频| 亚洲人成网站18禁止久久影院 | 久久久久久久久久久免费精品| 亚洲一区二区三区久久久久| 亚洲香蕉网久久综合影视 | 久久亚洲中文字幕精品有坂深雪 | 久久99亚洲网美利坚合众国 | 在线观看免费大黄网站| 久久久久国产精品免费看| 免费一级毛片在线播放放视频| 亚洲国产一区在线观看| 亚洲乱码无码永久不卡在线| 免费国产成人午夜电影| 毛片a级三毛片免费播放| 性xxxxx大片免费视频| 黄 色一级 成 人网站免费| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 |