zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    家长如何助力孩子适应小学生活
    一年级线上家长会
    gdb常用调试命令
    二叉树-后序遍历
    机器人
    Oracle创建只读账号的详细步骤
    ORACLE RAC日常运维-调整RAC+DG环境redo大小
    Redis 延迟分析
    oracle dataguard 重启步骤
    catalog start with + switch database to copy的妙用
  • 原文地址:https://www.cnblogs.com/qiudeqing/p/3408279.html
Copyright © 2011-2022 走看看