application/x-www-form-urlencoded 標准編碼


在文本應用程序中,   從客戶端到服務器端數據傳輸編碼標准是application/x-www-form-urlencoded    這種數據的基本形式是采用"&"分割開的key/value例如:   name1=value1&name2=value2&name3=value3&.....&nameN=valueN

 

其中每一個key和value均按照如下規則進行編碼:

  1. 用"+"取代空字符
  2. 非數字,  字母用%HH格式進行替換,  其中HH是兩位16進制數字,  表示被替換字符的ASCII碼(例如"?"會被替換成"%3F", 對應十進制數是63,  也就是問號對應的ASCII值)
  3. 換行符用CR LF字符對表示, 對應的值是"%0D%0A";

 

form提交的數據默認使用的就是application/x-www-form-urlencoded,   所以無需關系編碼,   當使用ajax組織數據時, 需要用戶執行必要的轉換

  1. encodeURIComponent()方法.   在一些舊版本的javascript中這個方法是不可用的並且需要依賴於escape()方法, 
  2. escape()方法不會對一些瀏覽器需要的字符進行編碼這里面包括"@", "/"和"+", 已經不推薦使用,  可以作為后備
  3. encodeURIComponent()對一些字符不進行轉義: "~"  "!" "." "'" "(" ")"
  4. escape()和encodeURIComponent()都將空白字符編碼為%20而不是"+"
  5. 綜合以上得出一個比較合理的轉換函數,  不依賴瀏覽器產生符合規范的編碼
     1 function encodeValue(val)
     2 {
     3  var encodedVal;
     4  if (!encodeURIComponent)
     5  {
     6    encodedVal = escape(val);
     7    /* fix the omissions */
     8    encodedVal = encodedVal.replace(/@/g, '%40');
     9    encodedVal = encodedVal.replace(/\//g, '%2F');
    10    encodedVal = encodedVal.replace(/\+/g, '%2B');
    11  }
    12  else
    13  {
    14    encodedVal = encodeURIComponent(val);
    15    /* fix the omissions */
    16    encodedVal = encodedVal.replace(/~/g, '%7E');
    17    encodedVal = encodedVal.replace(/!/g, '%21');
    18    encodedVal = encodedVal.replace(/\(/g, '%28');
    19    encodedVal = encodedVal.replace(/\)/g, '%29');
    20    encodedVal = encodedVal.replace(/'/g, '%27');
    21  }
    22  /* clean up the spaces and return */
    23  return encodedVal.replace(/\%20/g,'+'); 
    24 }
    View Code

     

參考:  http://ajaxref.com/ch2/imagegenerator.html

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FencodeURI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM