window.location.herf=url參數有中文,到后台亂碼問題解決


js中的代碼:

  /*將中文的參數進行兩次編碼 */

  function queryByName(){
                    //獲取查詢條件的用戶名
                    var queryName=$("#queryName").val();//尚曉飛當當
                    alert(queryName);
                    //進行后台跳轉
                    window.location.href="<%=request.getContextPath() %>/master/sysUser_queryByName.action?queryName="+encodeURI(encodeURI(queryName));
                    
                }

 

java后台的代碼:

 

  public String queryByName() throws UnsupportedEncodingException{
        
        System.out.println("SysUserAction.queryByName()"+queryName);
        //這里用struts2中設定queryName屬性接收前台傳來的參數,然后將該接收參數,進行解碼
        String name = java.net.URLDecoder.decode(queryName,"UTF-8");//需要拋異常
        System.out.println("SysUserAction.queryByName()"+name);
        this.list=sysUserService.querySysUserByName(name);
        
        return "userList";
    }

 

 

控制台打印結果:

SysUserAction.queryByName()%E5%B0%9A%E6%99%93%E9%A3%9E%E5%BD%93%E5%BD%93
SysUserAction.queryByName()尚曉飛當當

 

 

原因:后來網搜資料,發現原來在對后台java程序里的queryName賦值的時候,本身已經使用了一次解碼,不過解碼的結果依然不對。所以我們可以在頁面 上進行兩次編碼操作,這樣后台自動的那次就可以抵消掉一次,然后在使用 searchtext=java.net.URLDecoder.decode(queryName,"UTF-8");/*需要處理異常*/進行一次 解碼就好了

 

 

 


免責聲明!

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



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