• 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

  • 相关阅读:
    1257 背包问题 V3(二分)
    全国高校绿色计算大赛 预赛第三阶段(Python)(随机数)
    全国高校绿色计算大赛 预赛第二阶段(Python)
    全国高校绿色计算大赛 预赛第一阶段(Python)
    全国绿色计算大赛 模拟赛第二阶段 (Python)
    全国绿色计算大赛 模拟赛第一阶段(Python)
    51node 1134 最长递增子序列 (数据结构)
    提高(Android)开发效率的工具与网站
    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)
    SharedPreferences 的另一种场景的用法
  • 原文地址:https://www.cnblogs.com/qiudeqing/p/3408279.html
Copyright © 2020-2023  润新知