방법 설명 :
이 메소드를 사용하면 QueryString.parse를 무시할 수 있습니다
문법:
코드 사본은 다음과 같습니다.
querystring.unescape
매개 변수 수신 :
없음
소스 코드 :
코드 사본은 다음과 같습니다.
// decodeUricomponent에 대한 안전한 빠른 대안
querystring.unescapebuffer = function (s, decodespaces) {
var out = 새로운 버퍼 (s.length);
var state = 'char'; // 상태 : char, hex0, hex1
var n, m, hexchar;
for (var inindex = 0, outIndex = 0; inindex <= s.length; inindex ++) {
var c = s.charcodeat (inindex);
스위치 (주) {
CASE 'char':
스위치 (c) {
Case charCode ( '%') :
n = 0;
m = 0;
state = 'hex0';
부서지다;
case charcode ( '+') :
if (decodespaces) c = charcode ( '');
// 통과합니다
기본:
Out [OutIndex ++] = C;
부서지다;
}
부서지다;
케이스 'hex0':
상태 = '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;
} 또 다른 {
out [outIndex ++] = charcode ( '%');
Out [OutIndex ++] = C;
상태 = 'char';
부서지다;
}
부서지다;
케이스 'hex1':
상태 = '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;
} 또 다른 {
out [outIndex ++] = charcode ( '%');
Out [OutIndex ++] = Hexchar;
Out [OutIndex ++] = C;
부서지다;
}
Out [OutIndex ++] = 16 * n+m;
부서지다;
}
}
// TODO 지원 반환 임의의 버퍼를 지원합니다.
꺼짐 out.slice (0, OutIndex -1);
};