1. 程式人生 > >encodeURIComponent編碼後java後臺的解碼

encodeURIComponent編碼後java後臺的解碼

scrip 特殊 one asc OS code post utf 後臺

encodeURI不會對#等特殊符號編碼,當訪問地址中含有#等特殊字符的時候,會自動刪除#後面的字符串,導致頁面有誤;

解決辦法:使用encodeURIComponent編碼;

JavaScript:

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

java:

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");

為什麽要兩次編碼的原因:

後臺java代碼給searchtext賦值的時候,本身已經使用了一次解碼,不過解碼的結果依然不對。所以我們可以在頁面上進行兩次編碼操作,

這樣後臺自動的那次就可以抵消掉一次,然後在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");進行一次解碼就好了。

註意:

encodeURIComponent不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ‘ ( ) 。

其他字符(比如 :;/?:@&=+$,# 這些用於分隔 URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的

encodeURIComponent編碼後java後臺的解碼