وصف الطريقة:
هذه الطريقة تجعل من الممكن تجاوز querystring.parse
القواعد:
نسخة الكود كما يلي:
Querystring.unescape
تلقي المعلمات:
لا أحد
رمز المصدر:
نسخة الكود كما يلي:
// بديل سريع آمن لـ DecodeUricompon
querystring.unescapeBuffer = function (s ، decodespaces) {
var out = new Buffer (S.Length) ؛
var state = 'char' ؛ // ينص: char ، hex0 ، hex1
var n ، m ، hexchar ؛
لـ (var inindex = 0 ، outIndex = 0 ؛ inindex <= s.length ؛ inindex ++) {
var c = s.charcodeat (inindex) ؛
التبديل (الحالة) {
حالة "char":
التبديل (ج) {
Case charcode ('٪'):
ن = 0 ؛
م = 0 ؛
State = 'Hex0' ؛
استراحة؛
Case charcode ('+'):
إذا (decodespaces) c = charcode ('') ؛
// تمر من خلال
تقصير:
Out [outIndex ++] = c ؛
استراحة؛
}
استراحة؛
حالة "Hex0":
State = 'Hex1' ؛
hexchar = c ؛
if (charcode ('0') <= c && c <= charcode ('9')) {
n = c - charcode ('0') ؛
} آخر إذا (charcode ('a') <= c && c <= charcode ('f')) {
n = c - charcode ('a') + 10 ؛
} آخر إذا (charcode ('a') <= c && c <= charcode ('f')) {
n = c - charcode ('a') + 10 ؛
} آخر {
Out [outIndex ++] = charcode ('٪') ؛
Out [outIndex ++] = c ؛
State = 'Char' ؛
استراحة؛
}
استراحة؛
حالة "Hex1":
State = 'Char' ؛
if (charcode ('0') <= c && c <= charcode ('9')) {
M = C - charcode ('0') ؛
} آخر إذا (charcode ('a') <= c && c <= charcode ('f')) {
M = C - charcode ('a') + 10 ؛
} آخر إذا (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 دعم إعادة المخازن المؤقتة التعسفية.
return out.slice (0 ، outIndex - 1) ؛
} ؛