Es gibt drei Funktionen in JavaScript, die Zeichenfolgen kodieren können, nämlich: Escape, EncodeURI, EncodeURIComponent und die entsprechenden drei Dekodierungsfunktionen: Unescape, DecodeURI, DecodeURIComponent.
Das Folgende ist eine kurze Einführung in ihre Unterschiede:
1 escape()-Funktion
Definition und Verwendung
Die Funktionescape() kodiert einen String, sodass dieser auf allen Computern gelesen werden kann.
Grammatik
escape(string)
Parameterbeschreibung
Zeichenfolge Erforderlich. Die Zeichenfolge, die maskiert oder codiert werden soll.
Rückgabewert
Eine Kopie der codierten Zeichenfolge. Einige dieser Zeichen werden durch hexadezimale Escape-Sequenzen ersetzt.
Beschreibung
Diese Methode kodiert weder ASCII-Buchstaben und -Zahlen noch die folgenden ASCII-Satzzeichen: - _ ~ * ' ( ) . Alle anderen Zeichen werden durch Escape-Sequenzen ersetzt.
2 encodeURI()-Funktion
Definition und Verwendung
Die Funktion encodeURI() kodiert einen String als URI.
Grammatik
encodeURI(URIstring)
Parameterbeschreibung
URIstring Erforderlich. Eine Zeichenfolge, die den URI oder anderen zu kodierenden Text enthält.
Rückgabewert
Eine Kopie des URIstrings, wobei einige Zeichen durch hexadezimale Escape-Sequenzen ersetzt wurden.
Beschreibung
Diese Methode kodiert weder ASCII-Buchstaben und -Zahlen noch diese ASCII-Satzzeichen: - _ ~ * ' ( ) .
Der Zweck dieser Methode besteht darin, den URI vollständig zu kodieren, sodass die Funktion encodeURI() die folgenden ASCII-Satzzeichen, die im URI eine besondere Bedeutung haben, nicht maskiert: ;/?:@&= $, #
3 encodeURIComponent()-Funktion
Definition und Verwendung
Die Funktion encodeURIComponent() kodiert einen String als URI-Komponente.
Grammatik
encodeURIComponent(URIstring)
Parameterbeschreibung
URIstring Erforderlich. Eine Zeichenfolge, die URI-Komponenten oder anderen zu kodierenden Text enthält.
Rückgabewert
Eine Kopie des URIstrings, wobei einige Zeichen durch hexadezimale Escape-Sequenzen ersetzt wurden.
Beschreibung
Diese Methode kodiert weder ASCII-Buchstaben und -Zahlen noch diese ASCII-Satzzeichen: - _ ~ * ' ( ) .
Andere Zeichen (z. B. :;/?:@&= $,#, bei denen es sich um Satzzeichen zur Trennung von URI-Komponenten handelt) werden durch eine oder mehrere hexadezimale Escape-Sequenzen ersetzt.
Tipps und Hinweise
Tipp: Bitte beachten Sie, dass sich die Funktion encodeURIComponent() von der Funktion encodeURI() dadurch unterscheidet, dass erstere davon ausgeht, dass ihre Argumente Teil eines URI sind (z. B. Protokoll, Hostname, Pfad oder Abfragezeichenfolge). Die Funktion encodeURIComponent() entgeht daher den Satzzeichen, die zum Trennen von Teilen des URI verwendet werden.
4 Zusammenfassung:
Durch die Analyse der drei Funktionen können wir wissen, dass escape() alle eingehenden Zeichenfolgen außer ASCII-Buchstaben, Zahlen und bestimmten Symbolen maskiert. Wenn Sie die URL codieren möchten, ist es daher am besten, dies nicht zu verwenden Verfahren. Und encodeURI() wird zum Codieren des gesamten URI verwendet, da die zulässigen Zeichen im URI nicht codiert und konvertiert werden. Die encodeURIComponent-Methode sollte am häufigsten zum Codieren einer einzelnen URIComponent verwendet werden (bezogen auf Anforderungsparameter). Sie kann chinesische Zeichen und Sonderzeichen in den Parametern maskieren, ohne die gesamte URL zu beeinträchtigen.
5 Beispiel:
1 Escape()
<script type="text/javascript"> document.write(escape("http://www.w3school.com.cn/") + "<br />") document.write(escape("?!=()#%&")) </script>
Ausgabe:
http%3A//www.w3school.com.cn %3F%21%3D%28%29%23%25%26
2 encodeURI()
<script type="text/javascript"> document.write(encodeURI("http://www.w3school.com.cn/")+ "<br />") document.write(encodeURI("http://www.w3school.com.cn/My first/")) document.write(encodeURI(",/?:@&=+$#")) </script>
Ausgabe:
http://www.w3school.com.cn/ http://www.w3school.com.cn/My%20first/ ,/?:@&=+$#
Kodiert die gesamte URL, während URL-spezifische Kennungen nicht transkodiert werden.
3 encodeURIComponent()
Beispiel 1:
<script type="text/javascript"> document.write(encodeURIComponent("http://www.w3school.com.cn/")) document.write("<br />") document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) document.write("<br />") document.write(encodeURIComponent(",/?:@&=+$#")) </script>
Ausgabe:
http%3A%2F%2Fwww.w3school.com.cn http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F %2C%2F%3F%3A%40%26%3D%2B%24%23
Beispiel 2:
<script language="javascript">document.write(' <a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" http://cang.baidu.com/bruce42")+'">退出</a>');</script>
Kodieren Sie die Parameter in der URL, da die Parameter auch eine URL sind. Wenn sie nicht kodiert sind, wirkt sich dies auf den Sprung der gesamten URL aus.