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

來源:互聯網
上載者:User

標籤:style   java   color   使用   strong   問題   

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");/*需要處理異常*/進行一次 解碼就好了

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.