Dekodierung von URL-kodierte UTF-8-Zeichenfolgen in VBScript
Muss ich die URL-decodieren einer Zeichenfolge in einem VBScript. Die Zeichenfolge kann Unicode-Zeichen, die codiert werden als mehrere bytes pro UTF-8. So zum Beispiel "Paris%20%E2%86%92%20Z%C3%BCrich" würde decodieren "Paris → Zürich".
Um die Arbeit zu tun, ich bin mit einem Stück code, der wie folgt aussieht:
Function URLDecode(str)
set list = CreateObject("System.Collections.ArrayList")
strLen = Len(str)
for i = 1 to strLen
sT = mid(str, i, 1)
if sT = "%" then
if i + 2 <= strLen then
list.Add cbyte("&H" & mid(str, i + 1, 2))
i = i + 2
end if
else
list.Add asc(sT)
end if
next
depth = 0
for each by in list.ToArray()
if by and &h80 then
if (by and &h40) = 0 then
if depth = 0 then Err.Raise 5
val = val * 2 ^ 6 + (by and &h3f)
depth = depth - 1
if depth = 0 then
sR = sR & chrw(val)
val = 0
end if
elseif (by and &h20) = 0 then
if depth > 0 then Err.Raise 5
val = by and &h1f
depth = 1
elseif (by and &h10) = 0 then
if depth > 0 then Err.Raise 5
val = by and &h0f
depth = 2
else
Err.Raise 5
end if
else
if depth > 0 then Err.Raise 5
sR = sR & chrw(by)
end if
next
if depth > 0 then Err.Raise 5
URLDecode = sR
End Function
Dieser scheint gut zu funktionieren, aber es sieht übertrieben Komplex für mich. In Zeiten von HTML5 und web-standards, es muss einen einfacheren Weg, um dies getan, ohne eine Reihe von hand-made loops und Bedingungen. Irgendwelche Vorschläge?
InformationsquelleAutor GOTO 0 | 2013-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchte ich zeigen drei Methoden für die drei Umgebungen variieren. Alle diese Methoden erfordert JScript ist
encodeURIComponent
unddecodeURIComponent
Funktionen.1. In ASP, mit server-side JavaScript ist eine der am meisten geeignete Lösungen :
2. Nur 32-Bit (aufgrund MSScriptControl.ScriptControl ist nur 32-bit-Komponente) in keinem anderen WSH :
3. Mit 64-bit-Unterstützung in anderen WSH mit einem WSC:
urlencdec.wsc (erstellt mit WSC-Assistent)
und vbs-code :
du bist herzlich willkommen.
Ich machte ein Update, beachten Sie, dass wenn Sie die zweite Lösung.
Wow, hatte keine Ahnung, Sie könnten mix JavaScript und VB so. Geist = geblasen. Dies eröffnet eine ganz neue Welt, wenn Sie stecken im klassischen ASP!
Beachten Sie, dass
Request.Querystring()
wird automatisch Dekodieren Escapezeichen für Sie, aber das hilft nur, wenn sich die kodierte Zeichenfolge über den querystring.InformationsquelleAutor Kul-Tigin
Reinen vbs classic asp URLDecode - Funktion, mit der utf-8-Unterstützung.
InformationsquelleAutor cuixiping
Die beste Art und Weise der Codierung einer URL mit Hilfe von VBS zu verwenden alsterrunde() javascript-Funktion!! Das ScriptControl-Komponente ermöglicht das ausführen von js-code aus einer VBS-Umgebung.
Hier mein URLEncode-Funktion, die funktioniert genau wie die js-Funktion (in der Tat, er fordert es!!):
InformationsquelleAutor Potele