国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ajax中文上傳編碼問(wèn)題
上次提出了一個(gè)ajax下載中文編碼問(wèn)題,這次有遇到了ajax的上傳中文亂麻問(wèn)題
繼續(xù)bs各種編碼:)

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

//省略了對(duì)象定義
//
..



function uriFunc() {
    
var separator = "?";
    
if (uri.indexOf("?">= 0)
        separator 
= "&";        
    
return uri + separator + paramName + "=" + escape(inputField.value,‘utf-8‘);
  }
然后就要在后臺(tái)進(jìn)行解碼了
以為沒法直接從request中取到編碼字符串,所以使用方法先取出url,然后再取出url的參數(shù)進(jìn)行解碼
取出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];
      }

 
//解碼方法
 
//以下是對(duì)js的escape進(jìn)行解碼
      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 };

     
      
/**
       * 解碼 說(shuō)明:本方法保證 不論參數(shù)s是否經(jīng)過(guò)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 { // 對(duì)應(yīng)的字符未經(jīng)過(guò)編碼
      sbuf.append((char) ch);
      }
      i
++;
      }
      
return sbuf.toString();
      }

這時(shí)候得到的exfirstword 就是正確的中文了
問(wèn)題解決
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JavaScript escape/unescape編碼的Java實(shí)現(xiàn)
字符串多模式精確匹配(臟字/敏感詞匯搜索算法) 之算法前傳II
php33
51單片機(jī)串口通信軟件程序集 - 中國(guó)電子前沿-->領(lǐng)先的嵌入式技術(shù)網(wǎng)站平臺(tái),單片機(jī),DS...
Trie樹的分析和理解
單片機(jī)之串口通信
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服