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

Schreibe einen Kommentar