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修改属性值实例代码(设置属性值)
Jan 06 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
javascript将数字转换整数金额大写的方法
Jan 27 Javascript
详解AngularJS中自定义指令的使用
Jun 17 Javascript
JS实现带鼠标效果的头像及文章列表代码
Sep 27 Javascript
基于jQuery实现网页打印功能
Dec 01 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
May 27 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
jQuery3.0中的buildFragment私有函数详解
Aug 16 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
如何实现iframe父子传参通信
Feb 05 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批量删除数据
2007/01/18 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php中使用sftp教程
2015/03/30 PHP
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python中实现控制小数点位数的方法
2019/01/24 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python监控nginx端口和进程状态
2019/09/06 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
django admin 添加自定义链接方式
2020/03/11 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
出纳岗位职责范本
2013/12/01 职场文书
生日宴会答谢词
2014/01/09 职场文书
西式结婚主持词
2014/03/14 职场文书
美容院店长岗位职责
2014/04/08 职场文书
2014中考励志标语
2014/06/05 职场文书
男性健康日的活动方案
2014/08/18 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
单位计划生育责任书
2015/05/09 职场文书