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实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
javascript进行四舍五入方法汇总
Dec 16 Javascript
jQuery聚合函数实例
May 21 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
Node.js返回JSONP详解
May 18 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
解决Mac node版本升级失败的问题
May 16 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
Aug 27 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
js调用网络摄像头的方法
Dec 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
php中Smarty模板初体验
2011/08/08 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
为python设置socket代理的方法
2015/01/14 Python
Python端口扫描简单程序
2016/11/10 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
python+pyqt5编写md5生成器
2019/03/18 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Python处理PDF与CDF实例
2020/02/26 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
基于Python实现简单学生管理系统
2020/07/24 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
采购内勤岗位职责
2013/12/10 职场文书
婚前财产公证书
2014/04/10 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
如何使用CocosCreator对象池
2021/04/14 Javascript
Golang解析JSON对象
2022/04/30 Golang