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 入门·JavaScript 具有全范围的运算符
Oct 01 Javascript
jquery 分页控件实现代码
Nov 30 Javascript
js获取多个tagname的节点数组
Sep 22 Javascript
JavaScript省市联动实现代码
Feb 15 Javascript
jquery判断浏览器后退时候弹出消息的方法
Aug 11 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
深入理解jQuery()方法的构建原理
Dec 05 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
Jul 24 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
vue element-ui实现动态面包屑导航
Dec 23 Javascript
JavaScript点击按钮生成4位随机验证码
Jan 28 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
js数组去重的hash方法
2016/12/22 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
现役军人家属慰问信
2015/03/24 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
24年收藏2000多部退役军用电台
2022/02/18 无线电
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
Python find()、rfind()方法及作用
2022/12/24 Python