Frage an javascript, special-characters, url – Sonderzeichen in einer URL zu entkommen

5

Ich benutze eine URL, um eine HTML-Seite zu öffnen, und ich sende Daten in Querystring mit der Seiten-URL.

Zum Beispiel:abc.html?firstParameter=firstvalue&seconedParameter=seconedvalue

Das Problem ist, dass wennfirstvalue odersecondvalue In Parameter enthält Sonderzeichen wie#,(,),%,{, dann baut sich meine url nicht gut auf. In diesem Fall wird die URL nicht überprüft. Ich mache das alles injavascript. Kann mir bitte irgendein Körper dabei helfen?

Deine Antwort

2   die antwort
15

Sie haben 3 Möglichkeiten:

escape() will not encode: @*/+

encodeURI() will not encode: [email protected]#
escape() will not encode: @*/+

encodeURI() will not encode: [email protected]#$&*()=:/,;?+'

encodeURIComponent() will not encode: ~!*()'
amp;*()=:/,;?+' encodeURIComponent() will not encode: ~!*()'

Wenn Sie jedoch eine URL an einen GET-Parameter einer anderen Seite übergeben möchten, sollten Sie escape oder encodeURIComponent verwenden, encodeURI jedoch nicht.

escape ist veraltet. Benutze es nicht. Quentin
Danke Yogesh, es hat funktioniert. ARV
Unterstrich funktioniert nicht Animay
Danke Yogesh, kannst du mir bitte sagen, wie ich diese Methoden in Javascript verwende? kann ich diese Methoden wie URL.escape () aufrufen müssen; ARV
3

dass Sie alle in RFC 1738 und RFC 3986 angegebenen reservierten Zeichen maskiert haben, sollten Sie eine Kombination aus encodeURIComponent, escape und einem Ersatz für das Sternchen ('*') wie folgt verwenden:

encoded = encodeURIComponent( parm ).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");

[Erläuterung] Während RFC 1738: Uniform Resource Locators (URL) angibt, dass die Zeichen *,!, '(Und) in der URL möglicherweise unverschlüsselt bleiben,

Daher dürfen in einer URL nur alphanumerische Zeichen, die Sonderzeichen "$ -_. +! * '()" Und reservierte Zeichen, die für ihre reservierten Zwecke verwendet werden, unverschlüsselt verwendet werden.

RFC 3986, Seite 12-13, besagt, dass diese Sonderzeichen als Subtrennzeichen reserviert sind.

reserviert = Gen-Delims / Sub-Delims

gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"

sub-delims = "!" / "$19$quot; / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

Die Funktion escape () ist veraltet, kann jedoch zur URL-Codierung von Ausrufezeichen, einfachen Anführungszeichen, linker und rechter Klammer verwendet werden. Und da es eine gewisse Unklarheit darüber gibt, ob ein Stern in einer URL codiert werden muss und das Codieren nicht schadet, können Sie es explizit mithilfe des Funktionsaufrufs replace () codieren. [Beachten Sie, dass die escape () - Funktion alszweiter Parameter zum ersten Funktionsaufruf replace (). Wie hier verwendet, ruft replace die escape () -Funktion einmal für jedes übereinstimmende Sonderzeichen von!, ', (Oder) auf, und escape gibt lediglich die' Escape-Sequenz 'für dieses Zeichen zurück, um es zu ersetzen, wodurch escape-Zeichen mit den anderen zusammengesetzt werden Fragmente.]

Siehe auch"https://stackoverflow.com/questions/6533561/urlencode-the-asterisk-star-character"

Auch wenn einige Websites den Asterkisk (*) unter RFC3986 als reserviertes Zeichen identifiziert haben, wird er von ihnen nicht berücksichtigtihr URL-Komponentencodierungswerkzeug.

Nicht verschlüsselte URL-Parameter:

parm1=this is a test of encoding [email protected]#$%^&*()'
parm2=note that * is not encoded

Codierte URL-Parameter:

parm1=this+is+a+test+of+encoding+%21%40%23%24%25%5E%26*%28%29%27
parm2=note+that+*+is+not+encodeds+not+encoded

Verwandte Fragen