JS傳遞中文參數出現亂碼的解決辦法

 

1、window.open() 亂碼:  html

  JS中使用window.open("url?param="+paramvalue)傳遞參數出現亂碼,提交的時候,客戶端瀏覽器URL中顯示參數是正確的,java

  可是傳到了服務器端是是亂碼。這種狀況下須要在客戶端對該參數進行編碼,而後在服務器端解碼便可。瀏覽器

一、JS客戶端編碼:服務器

  var selStr=document.getElementsByName('selStr')[0].value;app

  selStr=encodeURI(encodeURI(selStr));編碼

  window.open('printWindow.do?bm=j&selStr='+selStr+'');url

注意:編碼的時候須要使用兩次encodeUri,寫一個就是????號,寫兩個則輸出: %4d%5a這種。spa

 

二、服務器端解碼:.net

  String tempSelStrs=request.getParameter("selStr").toString();code

  String selStr=java.net.URLDecoder.decode(tempSelStrs,"UTF-8");

 

2、SpringMVC,在JS用GET方式向後臺傳參出現亂碼:

JS中代碼:

  //顯示我建立的任務   function showTask(){
    var str1 = $("#str1").val();
    window.location.href="${pageContext.servletContext.contextPath }/workbench/task/query.html?str1="+encodeURI(encodeURI(str1));//GET方式傳參   }

 

後臺代碼:

  @RequestMapping(value = "query", method = RequestMethod.GET)//聲明是GET方式傳參 public String query(Model model, Task task, String pageNow,String pageSize, 
            HttpServletRequest request) {
        
        try {
            //解決GET方式傳參時參數亂碼的問題
            if(task.getStr1() != null ){
          //將Bean中字段取出 task.setStr1(java.net.URLDecoder.decode(task.getStr1(),
"UTF-8")); } //獲取登陸用戶信息 User user = (User) request.getSession().getAttribute("homeUser"); Integer userId = user.getUserId();//獲取登陸用戶ID task.setUserId(userId); task.setUserNickName(user.getUserNickname()+";");//登陸用戶暱稱 task.setDoTaskId(String.valueOf(user.getUserId())+";");//登陸用戶ID //一、獲取下拉框數據 Map<String,List<Map<String,String>>> map = taskService.getDropDownData(userId); model.addAttribute("map", map); if("".equals(task.getStr1()) || task.getStr1()==null){ task.setStr1("可輸入任務、執行人查找"); } model.addAttribute("task", task); PageView pageView = null; if (Common.isEmpty(pageNow)) { pageView = new PageView(1); } else { pageView = new PageView(Integer.parseInt(pageNow)); } //選擇分頁條數 if(pageSize!=null){ pageView.setPageSize(Integer.parseInt(pageSize)); model.addAttribute("pageSize", pageSize); } else { pageView.setPageSize(10); model.addAttribute("pageSize", 10); } //用於查詢全部數據 if("可輸入任務、執行人查找".equals(task.getStr1())){ task.setMyTask(null); }else{ task.setMyTask(task.getStr1()); } pageView = taskService.query(pageView, task); model.addAttribute("pageView", pageView); } catch (Exception e) { e.printStackTrace(); } return Common.ROOT_PATH + "/workbench/task/list"; }
相關文章
相關標籤/搜索