Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Sonderzeichen für Forms decodieren

Geschrieben von: Christian Holm
Kategorie: ASP Grundlagen

Bei Datenbankabfragen oder Webseitennavigation über Querystrings enthalten diese Strings meist URL-encodierte Zeichen (hexadezimale, zweistellige ASCII Codes), mit denen client-seitige Forms nichts anfangen können. Wenn Sie also die im Querystring abgelegten Informationen in Forms weiterverarbeiten möchten, müssen Sie diese Zeichen "decodieren". Dieser Artikel zeigt Ihnen eine server-seitige Lösung wie Sie dieses Problem angehen können.

Wenn man Request.QueryString(Variablenname) aufruft, so wird die Decodierung automatisch von ASP für uns durchgeführt. Greift man selbst auf den Querystring zu, dann steht man vor dem heute thematisierten Problem: es gibt keine eingebaute Funktion zum decodieren eines individuellen Querystrings.

Das hier präsentierte Script (erstellt von Christian Mairoll) ist quasi die umgekehrte Aktion der Server.URLEncode Methode. Es generiert z.B. aus dem URL-encodeten String http%3A%2F%2Fwww%2Easpheute%2Ecom den u.a. auch für Forms lesbaren String http://www.aspheute.com.

Sehen wir uns das Script einmal näher an. Beginnen wir mit der server-seitigen Funktion DecodeURL:

Function DecodeURL(strQuery)
    strQuery = Replace(strQuery, "+", " ")
    arTeile = Split(strQuery, "%")
    y = 0
    For Each strTeil In arTeile
        y = y + 1
        If y > 1 Then
            Teil1 = Left(strTeil, 2)
            Teil2 = Mid(strTeil, 3)
            x = "&H" & Teil1
            x = CInt(x)
            strQueryString = strQueryString & Chr(x) & Teil2
        Else
            strQueryString = strQueryString & strTeil
        End If
    Next
DecodeURL = strQueryString
End Function

Zuerst werden aus dem der DecodeURL Funktion übergebene Querystring (strQuery) die Pluszeichen (+) herausgesucht und durch die Replace Function durch ein Leerzeichen ersetzt. Pluszeichen in Querystrings entsprechen normalen Wortabständen und keiner boolschen Addition (AND). D.h. würde im Querystring "Active+Server+Pages" stehen, würde das einfach Active Server Pages bedeuten.

Als nächstes werden die zweistelligen hexadezimalen ASCII Code Zeichen in ihre äquvivalenten Sonderzeichen umgewandelt. Vor jedem einzelnen zweistelligen ASCII Zahlencode, der ein Sonderzeichen repräsentiert, erfolgt immer eine Trennung mit einem Prozentzeichen (%). Daher liegt es nahe, mit der Split Function zuerst die einzelnen Zeichen des Querystrings (strQuery) - vor der Umwandlung in ihr Äquvivalent - zu trennen bzw. zu gruppieren. Da die Split Function ein Array zurück gibt, weisen wir ihr auch ein Array (arTeile) zu.

Im For ... Each Statement werden, falls mit einem Prozentzeichen getrennte Sonderzeichen (die ja noch in Form eines hexadezimalen ASCII Codes vorhanden sind) gefunden wurden, umgewandelt. Um die Umwandlung durchführen zu können suchen wir uns vorerst mit Hilfe der Left Function die vorher getrennten zweistelligen ASCII Codes aus dem Array heraus. Diese herausgesuchten Zahlencodes werden dann mit dem Präfix &H versehen um das hexadezimale Zahlensystem zu signalisieren. Danach werden sie mit der CInt Funktion in ihre Integerwerte umgerechnet.

Die Umrechnung in Integerwerte hat den Sinn, daß man sie der Chr Function übergeben kann. Die Chr Function gibt dann das entsprechende - nun lesbare - Sonderzeichen zurück. Für den Fall, daß der Querystring neben den Sonderzeichen auch andere bzw. nur normale Zeichen (z.B Buchstaben) enthält tritt die Alternative der If-Verzweigung in Kraft.

Was noch fehlt ist die Kombination mit einem client-seitigen Formular. Dies ist der Einfachheit halber sehr simpel gehalten:

<form method=GET>
    String mit Sonderzeichen eingeben:
    <input type="text" name="Eingabe">
    <input type="submit" value="OK">
</form>

Wenn Sie diese Beispieldatei (DecodeURL.asp) auf einem Web Server ablaufen lassen, sowie der Function einen Querystring übergeben, so erhalten Sie folgendes Resultat (mit dem essentiellen Teil des Querystings in der Adresszeile):

Schlußbemerkung

Das gezeigte Beispielscript zeigt eine simple Methode wie man einen kryptischen Querystring der aus Sonderzeichen in Form von ASCII Codes besteht wieder in die u.a. auch für Forms verständliche Art konvertiert.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Überprüfen von HTML-Formularen mit ASP
Auswertung von HTML Formularen mit ASP
Einfache String Operationen

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.