encodeURIComponent方法在編碼單個URIComponent(指請求參數)應當是最經常使用的。須要注意到是字符’也是URI中的合法字符,因此也不會被編碼轉換。
encodeURIComponent()不編碼的字符: ~!*()''java
解決方法一:編碼
JavaScript:spa
window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));.net
java:code
searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");orm
爲何要兩次編碼的緣由:後臺java代碼給searchtext賦值的時候,自己已經使用了一次解碼,不過解碼的結果依然不對。因此咱們能夠在頁面上進行兩次編碼操做,這樣後臺自動的那次就能夠抵消掉一次,而後在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");進行一次解碼就行了。ip
解決方法二:get
另外還有一種方法是JavaScript進行一次編碼,後臺java處理時換種想法就行了:it
java代碼:io
String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");