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的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
Sep 28 Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 Javascript
javascript实现实时输出当前的时间
Apr 27 Javascript
js中对函数设置默认参数值的3种方法
Oct 23 Javascript
BootStrap中Table分页插件使用详解
Oct 09 Javascript
react router4+redux实现路由权限控制的方法
May 03 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
vue.js 实现a标签href里添加参数
Nov 12 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/15 PHP
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
php curl选项列表(超详细)
2013/07/01 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
JS随机数产生代码分享
2018/02/24 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
启动Atom并运行python文件的步骤
2018/11/09 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
写自荐信的七个技巧
2013/10/15 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
四好少年事迹材料
2014/01/12 职场文书
常务副总经理任命书
2014/06/05 职场文书
售后服务承诺函格式
2015/01/21 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript