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 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短