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最新动画教程+iso光盘下载
Jan 22 Javascript
jquery 应用代码 方便的排序功能
Feb 06 Javascript
javascript判断非数字的简单例子
Jul 18 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
Nov 20 Javascript
基于jQuery实现文本框缩放以及上下移动功能
Nov 24 Javascript
JavaScript评论点赞功能的实现方法
Mar 13 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
利用npm 安装删除模块的方法
May 15 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
vue中template的三种写法示例
Oct 21 Javascript
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python 可爱的大小写
2008/09/06 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
运动会通讯稿100字
2014/01/31 职场文书
建议书怎么写
2014/03/12 职场文书
申论倡议书范文
2014/05/13 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
项目申请汇报材料
2014/08/16 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
故宫英文导游词
2015/01/31 职场文书