在輸入地址欄時有時一些信息需要在地址欄看不見,我們就需要對其信息在前台轉碼后台解碼
js:encodeURIComponent編碼與解碼
今天在js往jsp和servlet傳參的時候出現:JavaScript用encodeURIComponentt編碼后無法再后台解碼的問題。
目前寫法:
window.self.location="list.jsp?searchtext="+encodeURIComponent(seartext);
java處理的代碼為:
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");
咋一看覺的沒問題,一編一解的,應該可以了。但還是出現了亂碼。
原因:
原來在對后台java程序里的searchtext賦值的時候,本身已經使用了一次解碼,不過解碼的結果依然不對。所以我們可以在頁面上進行兩次編碼操作,這樣后台自動的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");進行一次解碼就好了。
正確的代碼:
JavaScript:
window.self.location="list.jsp?searchtext="+encodeURIComponent(encodeURIComponent(seartext));
java:
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");
另外還有一種方法是JavaScript進行一次編碼,后台java處理時換種想法就好了:
java代碼:
String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");