源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

node.js中的querystring.unescape方法使用说明

  • 时间:2020-09-04 06:23 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:node.js中的querystring.unescape方法使用说明
[b]方法说明:[/b] 该方法使可用来重写 querystring.parse [b]语法:[/b]
[u]复制代码[/u] 代码如下:
querystring.unescape
[b]接收参数:[/b] 无 [b]源码:[/b]
[u]复制代码[/u] 代码如下:
// 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); };
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部