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的左右滚动实现代码
Dec 03 Javascript
用javascript作一个通用向导说明
Aug 30 Javascript
js计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
Nov 13 Javascript
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
JQuery ztree带筛选、异步加载实例讲解
Feb 25 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Oct 05 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
Nov 07 Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 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设计模式之迭代器模式的深入解析
2013/06/13 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python Queue模块详解
2014/11/30 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
python开发之str.format()用法实例分析
2016/02/22 Python
python中web框架的自定义创建
2019/09/08 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
劳动实践课感言
2014/02/01 职场文书
商场总经理岗位职责
2014/02/03 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
教师工作态度自我评价
2015/03/05 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
安全守法证明
2015/06/23 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
JS高级程序设计之class继承重点详解
2022/07/07 Javascript