斷點

          每天進步一點點!
          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");
          主站蜘蛛池模板: 微山县| 乳源| 沐川县| 哈尔滨市| 东乌珠穆沁旗| 临猗县| 博白县| 东乡族自治县| 龙州县| 伊宁县| 且末县| 宝清县| 亳州市| 卫辉市| 从化市| 鄄城县| 淮安市| 伊春市| 新河县| 西吉县| 邵东县| 莱芜市| 云林县| 年辖:市辖区| 玉树县| 防城港市| 宣城市| 闻喜县| 秦安县| 莱阳市| 甘肃省| 扎赉特旗| 英超| 丰县| 昌乐县| 涟源市| 弥勒县| 措勤县| 葫芦岛市| 芜湖县| 济阳县|