node.js中的querystring.unescape方法使用说明
方法说明:
该方法使可用来重写querystring.parse
语法:
querystring.unescape
接收参数:
无
源码:
//asafefastalternativetodecodeURIComponent
QueryString.unescapeBuffer=function(s,decodeSpaces){
varout=newBuffer(s.length);
varstate='CHAR';//states:CHAR,HEX0,HEX1
varn,m,hexchar;
for(varinIndex=0,outIndex=0;inIndex<=s.length;inIndex++){
varc=s.charCodeAt(inIndex);
switch(state){
case'CHAR':
switch(c){
casecharCode('%'):
n=0;
m=0;
state='HEX0';
break;
casecharCode('+'):
if(decodeSpaces)c=charCode('');
//passthru
default:
out[outIndex++]=c;
break;
}
break;
case'HEX0':
state='HEX1';
hexchar=c;
if(charCode('0')<=c&&c<=charCode('9')){
n=c-charCode('0');
}elseif(charCode('a')<=c&&c<=charCode('f')){
n=c-charCode('a')+10;
}elseif(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');
}elseif(charCode('a')<=c&&c<=charCode('f')){
m=c-charCode('a')+10;
}elseif(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;
}
}
//TODOsupportreturningarbitrarybuffers.
returnout.slice(0,outIndex-1);
};
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短