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 相关文章推荐
图片完美缩放
Sep 07 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
Dec 18 Javascript
jquery实现一个简单的表单验证实例
Mar 30 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 jQuery
Javascript中的this,bind和that使用实例
Dec 05 Javascript
Vue 技巧之控制父类的 slot
Feb 24 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 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识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
react-router实现按需加载
2017/05/09 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
Python Socket编程入门教程
2014/07/11 Python
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python-split()函数实例用法讲解
2020/12/18 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
Linux上比较文件的命令都有哪些
2012/02/24 面试题
小学教师的自我评价范例
2013/10/31 职场文书
高一英语教学反思
2014/01/22 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
校园安全演讲稿
2014/05/09 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书