斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          JSP頁面上傳圖片時出現的亂碼

          Posted on 2010-06-01 19:22 斷點 閱讀(614) 評論(0)  編輯  收藏 所屬分類: JScript
          對于出現的亂碼有2種解決方法:

          1、在JS中,window.showModalDialog傳遞對象。
          function tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit) {//解決亂碼的問題,增加變量paramObj。10.06.01
              var paramObj = {
                  
          "clmNo" : clmNo,
                  
          "billType" : billType,
                  
          "maxFileNum" : maxFileNum,
                  
          "fileType" : fileType,
                  
          "singleLimit" : singleLimit,
                  
          "totalLimit" : totalLimit
              }
          ;
              
          var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp",paramObj,"dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");
              
          return r;
          }

          在uploadFile.jsp中,通過js獲得參數。
          <script>
              
          var paramObj = window.dialogArguments;
              
          var clmNo = paramObj.clmNo;
              
          var billType = paramObj.billType;
              
          var maxFileNum = paramObj.maxFileNum;
              
          var fileType = paramObj.fileType;
              
          var singleLimit = paramObj.singleLimit;
              
          var totalLimit = paramObj.totalLimit;
              tool.loadApplet('
          <%=agentIp%>','<%=agentPort%>','<%=orgId%>',clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit);    
            
          </script>


          2、在JS中,window.showModalDialog通過?傳遞參數。
          function tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit) {
              billType = encodeURIComponent(billType);
              var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp?clmNo="+clmNo+"&billType="+billType+"&maxFileNum="+maxFileNum+"&fileType="+fileType+"&singleLimit="+singleLimit+"&totalLimit="+totalLimit,"","dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");
              
          return r;
          }

          在uploadFile.jsp中,通過java解析獲得參數。
          String paramStr = request.getQueryString();
          if (paramStr == null || paramStr.equals("")) {
              
          return;
          }


              HashMap
          <String, ArrayList<String>> parameter = new HashMap<String, ArrayList<String>>();
              
              String[] paramArr 
          = paramStr.split("&+");
              String[] arr 
          = null;
              
          for (int i = 0; i < paramArr.length; i++{
                  arr 
          = paramArr[i].split("="2);
                  ArrayList
          <String> lst = parameter.get(arr[0]);
                  
          if (lst == null{
                      lst 
          = new ArrayList<String>();
                      parameter.put(arr[
          0], lst);
                  }

                  
          if (arr.length < 2{
                      lst.add(
          "");
                  }
           else {
                      lst.add(URLDecoder.decode(arr[
          1], "UTF-8"));
                  }

              }

              
              ArrayList
          <String> paramlst = parameter.get("billType");
              String billType 
          = paramlst.get(0);


          以上兩種方法,對應用服務器設置的url編碼沒有關系。

          還有一種方法,就是轉換成GB2312,不過此種方法跟服務器編碼設置還有關系,有時還會出現亂碼:
          billType = new String(billType.getBytes("ISO-8859-1"),"GB2312");
          主站蜘蛛池模板: 博兴县| 柘荣县| 关岭| 米脂县| 邳州市| 那曲县| 呼玛县| 曲麻莱县| 吉林市| 蒙城县| 馆陶县| 香港 | 满城县| 贺兰县| 华阴市| 博爱县| 陵川县| 温宿县| 临武县| 原平市| 梓潼县| 肃宁县| 修武县| 石林| 阳曲县| 谢通门县| 清河县| 七台河市| 长泰县| 石屏县| 织金县| 阿瓦提县| 兴城市| 鄂尔多斯市| 梁河县| 阳江市| 临武县| 南靖县| 太湖县| 黄大仙区| 兴义市|