node.js中的querystring.unescape方法使用说明_Javascript教程-查字典教程网
node.js中的querystring.unescape方法使用说明
node.js中的querystring.unescape方法使用说明
发布时间:2016-12-30 来源:查字典编辑
摘要:方法说明:该方法使可用来重写querystring.parse语法:复制代码代码如下:querystring.unescape接收参数:无源...

方法说明:

该方法使可用来重写 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教程学习
    编程开发子分类