斷點

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

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

          Posted on 2010-06-01 19:22 斷點 閱讀(618) 評論(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");
          主站蜘蛛池模板: 南川市| 剑川县| 呈贡县| 资阳市| 亚东县| 监利县| 黄大仙区| 西盟| 福鼎市| 荔波县| 成安县| 南丰县| 营山县| 武安市| 黄山市| 石门县| 衡山县| 乳山市| 上饶市| 奉新县| 定陶县| 富阳市| 望都县| 子长县| 崇州市| 阜南县| 宽甸| 巫山县| 福建省| 三江| 垫江县| 林甸县| 班戈县| 乐清市| 德格县| 体育| 响水县| 武胜县| 邢台市| 海盐县| 广东省|