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 相关文章推荐
jQuery对象[0]是什么含义?
Jul 31 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
Vue.js实战之组件之间的数据传递
Apr 01 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
Vuex实现计数器以及列表展示效果
Mar 10 Javascript
Angular8路由守卫原理和使用方法
Aug 29 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
Javascript var变量删除原理及实现
Aug 26 Javascript
jQuery zTree如何改变指定节点文本样式
Oct 16 jQuery
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
Snoopy类使用小例子
2008/04/15 PHP
php生成xml简单实例代码
2009/12/16 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
关于crontab的使用详解
2013/06/24 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
javascript用函数实现对象的方法
2015/05/14 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python win32 简单操作方法
2017/05/25 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
写给老婆的检讨书
2014/02/21 职场文书
买房委托公证书
2014/04/08 职场文书
环保专项行动方案
2014/05/12 职场文书
社区母亲节活动总结
2015/02/10 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript