Ich muss URL dekodieren eine Zeichenfolge in einem VBScript. Die Zeichenfolge kann Unicode-Zeichen enthalten, die als mehrere Bytes gemäß UTF-8 codiert sind. So würde beispielsweise "Paris% 20% E2% 86% 92% 20% C3% BCrich" nach "Paris → Zürich" dekodieren.Decodierung von URL-codierten UTF-8-Zeichenfolgen in VBScript
die Arbeit zu tun, ich bin ein 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
Dieses gut zu funktionieren scheint, aber es scheint mir übertrieben komplex. In Zeiten von HTML5 und Web-Standards muss es einen einfacheren Weg geben, dies ohne eine Reihe von handgemachten Schleifen und Bedingungen zu erledigen. Irgendwelche Vorschläge?
Dies ist eine gute Antwort, danke! –
@ ft1 du bist willkommen. –
@ ft1 Ich machte eine Reparatur, bedenken Sie, dass wenn Sie eine zweite Lösung verwendet haben. –