乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ajax中文上傳編碼問題

       duduwolf 2006-05-25
      上次提出了一個ajax下載中文編碼問題,這次有遇到了ajax的上傳中文亂麻問題
      繼續(xù)bs各種編碼:)

      遇到問題:在使用xhr發(fā)出請求時,請求的url中參數(shù)帶中文,這時在后臺解析request得不到中文
      如:
      request = new ActiveXObject("Microsoft.XMLHTTP");
      request.open("GET", url);中我的url需要帶中文參數(shù)
      直接加參數(shù)是在后臺解析不出來的,所以我使用方法對url進行編碼轉(zhuǎn)換
      request = new ActiveXObject("Microsoft.XMLHTTP");
      request.open(
      "GET", uriFunc());

      //省略了對象定義
      //
      ..


      function uriFunc() {
          
      var separator = "?";
          
      if (uri.indexOf("?">= 0)
              separator 
      = "&";        
          
      return uri + separator + paramName + "=" + escape(inputField.value,‘utf-8‘);
        }
      然后就要在后臺進行解碼了
      以為沒法直接從request中取到編碼字符串,所以使用方法先取出url,然后再取出url的參數(shù)進行解碼
      取出url,以及取參數(shù)方法
      String exfirstword = getUrlParameter(unescape(request.getQueryString()),"excludeuser"); 
       

       
      public String getUrlParameter(String str,String targetstr){
                
                String[] stringarray 
      = str.split("&")  ;
                  
                  
      for(int i=0;i<stringarray.length;i++){
                     
      if(stringarray[i].startsWith(targetstr)){
                         stringarray
      =stringarray[i].split("=");    
                         
      break;
                     }
                  }
                  
      return stringarray[1];
            }

       
      //解碼方法
       
      //以下是對js的escape進行解碼
            private final static byte[] val = { 0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x000x01,
                
      0x020x030x040x050x060x070x080x090x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x0A0x0B0x0C0x0D0x0E0x0F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x0A0x0B0x0C0x0D0x0E0x0F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,
                
      0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F };

           
            
      /**
             * 解碼 說明:本方法保證 不論參數(shù)s是否經(jīng)過escape()編碼,均能得到正確的“解碼”結(jié)果
             *
             * 
      @param s
             * 
      @return
             
      */
            
      public static String unescape(String s) {
            StringBuffer sbuf 
      = new StringBuffer();
            
      int i = 0;
            
      int len = s.length();
            
      while (i < len) {
            
      int ch = s.charAt(i);
            
      if (A <= ch && ch <= Z) { // ‘A‘..‘Z‘ : as it was
            sbuf.append((char) ch);
            } 
      else if (a <= ch && ch <= z) { // ‘a(chǎn)‘..‘z‘ : as it was
            sbuf.append((char) ch);
            } 
      else if (0 <= ch && ch <= 9) { // ‘0‘..‘9‘ : as it was
            sbuf.append((char) ch);
            } 
      else if (ch == - || ch == _ // unreserved : as it was
            || ch == . || ch == ! || ch == ~ || ch == *
            
      || ch == \‘‘ || ch == ( || ch == )) {
            sbuf.append((char) ch);
            } 
      else if (ch == %) {
            
      int cint = 0;
            
      if (u != s.charAt(i + 1)) { // %XX : map to ascii(XX)
            cint = (cint << 4| val[s.charAt(i + 1)];
            cint 
      = (cint << 4| val[s.charAt(i + 2)];
            i 
      += 2;
            } 
      else { // %uXXXX : map to unicode(XXXX)
            cint = (cint << 4| val[s.charAt(i + 2)];
            cint 
      = (cint << 4| val[s.charAt(i + 3)];
            cint 
      = (cint << 4| val[s.charAt(i + 4)];
            cint 
      = (cint << 4| val[s.charAt(i + 5)];
            i 
      += 5;
            }
            sbuf.append((
      char) cint);
            } 
      else { // 對應的字符未經(jīng)過編碼
            sbuf.append((char) ch);
            }
            i
      ++;
            }
            
      return sbuf.toString();
            }

      這時候得到的exfirstword 就是正確的中文了
      問題解決

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多