Url Decoding und Sonderzeichen/Umlaute

  • C# (ASP)

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Eierlein.

    Url Decoding und Sonderzeichen/Umlaute

    Hallo,

    ich arbeite momentan an einem URL Redirect Modul für das CMS DNN.
    Die Aufgabe ist es, bestimmte URLs abzufangen und dann einen 301 Redirect vorzunehmen.
    Ankommende Requests werden zum Beispiel so gehandhabt (Auszug):

    C#-Quellcode

    1. public void OnBeginRequest(object sender, EventArgs e)
    2. {
    3. try
    4. {
    5. HttpApplication app = (HttpApplication)sender;
    6. HttpServerUtility server = app.Server;
    7. HttpRequest request = app.Request;
    8. HttpResponse response = app.Response;
    9. string test = HttpUtility.UrlDecode(request.Url.AbsolutePath);
    10. if (test.contains("IndustrieIm%EF%BF%BDberblick.aspx")) Redirect301(response, "/home");
    11. catch (Exception exc)
    12. {
    13. DotNetNuke.Services.Exceptions.Exceptions.LogException(exc);
    14. }
    15. }


    Mit "normalen" URLs funktioniert das auch, nur nicht bei URLs mit Sonderzeichen/Umlauten.
    Wenn ich bspw. meine Website so aufrufe: "http://test123.de/IndustrieIm%EF%BF%BDberblick.aspx" (Das CMS hat den Link damals so generiert), dann stelle ich während des Debuggings fest, dass die URL im Backend etwas anders ankommt:

    Quellcode

    1. request.Url.AbsolutePath = "IndustrieIm%C3%AF%C2%BF%C2%BDberblick.aspx"
    2. test = "IndustrieIm�berblick.aspx"


    Gibt es einen Weg das in die Orginal URL zu konvertieren/encoden? Also:

    Quellcode

    1. request.Url.AbsolutePath = "IndustrieIm%EF%BF%BDberblick.aspx"
    2. test = "IndustrieImüberblick.aspx"


    Danke :)
    Hallo @*alliance

    meines Erachtens gehst du schon von einem Falschen AbsolutePath aus.

    VB.NET-Quellcode

    1. HttpUtility.UrlEncode("IndustrieImüberblick.aspx")
    2. ' = "IndustrieIm%c3%bcberblick.aspx"

    demnach:

    VB.NET-Quellcode

    1. HttpUtility.UrlDecode("IndustrieIm%c3%bcberblick.aspx")
    2. '=IndustrieImüberblick.aspx



    Woher kommt der von dir gegebene AbsolutePath mit dem "%EF%BF%BD" ?
    Du gehst von einem entschlüsselten Pfad aus ( string test = HttpUtility.UrlDecode(request.Url.AbsolutePath);)
    und fragst dann trotzdem ab, ob noch Umlaute verschlüsselt sind?

    mfg
    Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @Acr0most Stimmt, so wie ich es oben gepostet habe macht es keinen Sinn. Im lokalen Code überprüfe ich allerdings direkt den AbsolutePath (ohne vorher zu decoden). Hab das nur zu Testzwecken mal eingebaut um zu checken was er damit anstellt.

    Bezüglich woher die URL mit "%EF%BF%BD" kommt: Es gab damals wohl eine Unterseite "IndustrieImüberblick" und das CMS hat beim Anlegen dieser Seite den Alias (URL) so aufgebaut: "IndustrieIm%EF%BF%BDberblick.aspx".
    Das ist leider auch kein Einzelfall. Ich hab hier dutzende solcher Seiten, die umgeleitet werden müssen.
    Kann sich denn irgendjemand zusammenreimen, wieso aus "%EF%BF%BD" -> "%C3%AF%C2%BF%C2%BD" wird?
    utf8-chartable.de/unicode-utf8-table.pl?start=65280

    Generell ist dein %EF%BF%BD schon eine Codierung für ein Sonderzeichen - also das Fragezeichenkästchen (sprich Replacement Character)

    Offensichtlich wurde da schon irgendetwas verhunzt.
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Achso, dann kann ich also so ohne weiteres den genauen Wortlaut mit Umlauten wohl nicht mehr herstellen.
    Ok... damit kann ich leben, allerdings wäre es trotzdem gut, wenn ich im Backend auch "%EF%BF%BD" erhalte (bzw. durch Umwandlung von %C3%AF%C2%BF%C2%BD).
    Gibt es da eine Möglichkeit? - Wofür steht %C3%AF%C2%BF%C2%BD denn überhaupt?
    url-encoder.de/

    schau mal da kannst du ein weinig mit rumspielen :)

    /Edit#1:
    Hier ein Post, bei dem die Antwort auf die selbe Sequenz %C3%AF%C2%BF%C2%BD schließt.
    stackoverflow.com/questions/17…ql-line-breaks-formatting

    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Acr0most“ ()