2017-12-20 6 views
3

Ich habe eine Abfragezeichenfolge, die so aussieht. Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%2353411389BBB9577E1FD Dann habe ich eine Taste, die einen Beitrag Rückseite hat, die wie folgt aussieht:Abfragezeichenfolge ändert sich, wenn Sie versuchen, sie zu verwenden.

protected void btn_Click(object sender, EventArgs e) 
{ 
    string URL = Request.QueryString["s"]; 
    Response.Redirect("Page2.aspx?s="+URL); 
} 

Aber wenn ich auf der Seite 2 der Abfrage-String, die ich in URL ändert sich in # das% -Zeichen setzen erhalten und die Entschlüsselung scheitert, weil es nach dem% in der Zeichenfolge sucht, um alle meine Seiten zu trennen, funktioniert mit dieser Entschlüsselung, also kann ich die Art, die funktioniert, nicht ändern Ich muss wissen, warum ändert es% in # So sieht es aus, wenn es geht die Page2.aspx

Page2.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X#53411389BBB9577E1FD

Antwort

4

%23 ist der url-codierte Code für das Zeichen #. Wenn Sie schauen, ersetzt es tatsächlich die %23 durch # und nicht nur die %. Sie müssen dies überprüfen, wenn Sie Abfragezeichenfolgeninformationen zwischen Seiten übergeben.

protected void btn_Click(object sender, EventArgs e) 
{ 
    string URL = Request.QueryString["s"]; 
    Response.Redirect("Page2.aspx?s="+UrlEncode(URL)); 
} 
+0

Das ist richtig! Ich habe mich für die Info entschieden. – Ahmad

1

Es wird als URL Encoded character übersetzt. Beachten Sie, dass nicht nur das Prozentzeichen ersetzt wird, sondern auch der folgende Code 23. Wenn Sie sich die Tabelle auf der Wikipedia-Seite ansehen, sehen Sie, dass %23 das # Zeichen ist.

+0

Richtig danke habe das nicht gesehen! – Ahmad

3

Wenn Sie Ihre Abfragezeichenfolge sorgfältig prüfen, werden Sie feststellen, dass nicht % durch #, sondern %23 ersetzt wird. Das liegt daran, dass % ein Escape-Zeichen ist und %23 für # steht. Sie haben % sich mit %25 zu entkommen:

Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%252353411389BBB9577E1FD

+0

ja du bist richtig danke! – Ahmad

3
string URL = Request.QueryString["s"]; 
     URL = Server.UrlEncode(URL); // This will allow it to keep the %23 
     Response.Redirect("Page2.aspx?s="+URL); 

Wie alle Antworten Sie mit Ja bekam das ist der Grund Codierte So stellen Sie sicher, dass es sagen, es ist ein UrlEncode so es das ändern dont.

+0

Das hat diesen Code geholfen geholfen danke! – Ahmad

Verwandte Themen