encodeURIComponent編碼java后台解碼出現亂碼問題


問題:JavaScript請求后台帶着name參數,有中文進行編碼:url?name=" + encodeURIComponent(name);java后台直接使用name或者name=java.net.URLDecoder.decode(name,"UTF-8")進行解碼使用都是亂碼。

解決方法一:

JavaScript:

window.location.href="/url?name="+encodeURIComponent(encodeURIComponent(name));

java:

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

為什么要兩次編碼的原因:后台java代碼給searchtext賦值的時候,本身已經使用了一次解碼,不過解碼的結果依然不對。所以我們可以在頁面上進行兩次編碼操作,這樣后台自動的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");進行一次解碼就好了。

解決方法二:

另外還有一種方法是JavaScript進行一次編碼,后台java處理時換種想法就好了:

java代碼:

String name = new String(name.getBytes("ISO8859-1"), "UTF-8");

這個問題跟我之前的博客內容有些關聯:https://www.cnblogs.com/caozx/p/9628576.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM