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 相关文章推荐
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
Feb 04 Javascript
两个Javascript小tip资料
Nov 23 Javascript
js获取html参数及向swf传递参数应用介绍
Feb 18 Javascript
自己写的Javascript计算时间差函数
Oct 28 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
JS基于Mootools实现的个性菜单效果代码
Oct 21 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 Javascript
浅谈Express异步进化史
Sep 09 Javascript
js实现数组和对象的深浅拷贝
Sep 30 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
Apr 29 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 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-Java-Bridge使用笔记
2014/09/22 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
学python安装的软件总结
2019/10/12 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
使用python实现多维数据降维操作
2020/02/24 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
班主任评语大全
2014/04/26 职场文书
给校长的建议书600字
2014/05/15 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
演讲比赛策划方案
2014/06/11 职场文书
销售顾问工作计划书
2014/08/15 职场文书
教师党员个人自我评价
2015/03/04 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
关于Redis的主从复制及哨兵问题
2022/06/16 Redis
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS