node.js中的querystring.unescape方法使用说明


Posted in Javascript onDecember 10, 2014

方法说明:

该方法使可用来重写 querystring.parse

语法:

querystring.unescape

接收参数:

源码:

// a safe fast alternative to decodeURIComponent

QueryString.unescapeBuffer = function(s, decodeSpaces) {

  var out = new Buffer(s.length);

  var state = 'CHAR'; // states: CHAR, HEX0, HEX1

  var n, m, hexchar;

  for (var inIndex = 0, outIndex = 0; inIndex <= s.length; inIndex++) {

    var c = s.charCodeAt(inIndex);

    switch (state) {

      case 'CHAR':

        switch (c) {

          case charCode('%'):

            n = 0;

            m = 0;

            state = 'HEX0';

            break;

          case charCode('+'):

            if (decodeSpaces) c = charCode(' ');

            // pass thru

          default:

            out[outIndex++] = c;

            break;

        }

        break;

      case 'HEX0':

        state = 'HEX1';

        hexchar = c;

        if (charCode('0') <= c && c <= charCode('9')) {

          n = c - charCode('0');

        } else if (charCode('a') <= c && c <= charCode('f')) {

          n = c - charCode('a') + 10;

        } else if (charCode('A') <= c && c <= charCode('F')) {

          n = c - charCode('A') + 10;

        } else {

          out[outIndex++] = charCode('%');

          out[outIndex++] = c;

          state = 'CHAR';

          break;

        }

        break;

      case 'HEX1':

        state = 'CHAR';

        if (charCode('0') <= c && c <= charCode('9')) {

          m = c - charCode('0');

        } else if (charCode('a') <= c && c <= charCode('f')) {

          m = c - charCode('a') + 10;

        } else if (charCode('A') <= c && c <= charCode('F')) {

          m = c - charCode('A') + 10;

        } else {

          out[outIndex++] = charCode('%');

          out[outIndex++] = hexchar;

          out[outIndex++] = c;

          break;

        }

        out[outIndex++] = 16 * n + m;

        break;

    }

  }

  // TODO support returning arbitrary buffers.

  return out.slice(0, outIndex - 1);

};
Javascript 相关文章推荐
JS类定义原型方法的两种实现的区别评论很多
Sep 12 Javascript
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
Feb 04 Javascript
JavaScript为对象原型prototype添加属性的两种方式
Aug 01 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
Aug 18 Javascript
jQuery超酷平面式时钟效果代码分享
Mar 30 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
理解javascript封装
Feb 23 Javascript
JS数组排序方法实例分析
Dec 16 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
微信小程序三级联动选择器使用方法
May 19 Javascript
微信小程序实现日历功能
Nov 27 Javascript
详解vue-video-player使用心得(兼容m3u8)
Aug 23 Javascript
node.js中的querystring.escape方法使用说明
Dec 10 #Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 #Javascript
node.js中的querystring.parse方法使用说明
Dec 10 #Javascript
node.js中的url.resolve方法使用说明
Dec 10 #Javascript
node.js中的url.parse方法使用说明
Dec 10 #Javascript
node.js中的url.format方法使用说明
Dec 10 #Javascript
node.js中的console.assert方法使用说明
Dec 10 #Javascript
You might like
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
来自qq的javascript面试题
2010/07/24 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python删除文本中行数标签的方法
2018/05/31 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
python快排算法详解
2019/03/04 Python
详解django2中关于时间处理策略
2019/03/06 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
python输出pdf文档的实例
2020/02/13 Python
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
C语言面试题
2015/10/30 面试题
Python里面如何实现tuple和list的转换
2012/06/13 面试题
小学生家长寄语
2014/04/02 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
办护照工作证明
2014/10/01 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
数学教师求职信范文
2015/03/20 职场文书
主持稿开场白
2015/06/01 职场文书
css3 文字断裂效果
2022/04/22 HTML / CSS