天天看點

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