Welche dieser beiden Methoden sollte für die Kodierung von URLs verwendet werden?
Antworten
Zu viele Anzeigen?Das hängt davon ab, was Sie eigentlich tun wollen.
encodeURI geht davon aus, dass die Eingabe ein vollständiger URI ist, der einige Zeichen enthalten kann, die kodiert werden müssen.
encodeURIComponent kodiert alles, was eine besondere Bedeutung hat, also verwenden Sie es für Komponenten von URIs wie
var world = "A string with symbols & characters that have special meaning?";
var uri = 'http://example.com/foo?hello=' + encodeURIComponent(world);
Hier ist eine Zusammenfassung.
-
escape() wird @ * _ + - nicht kodieren. /
Verwenden Sie es nicht.
-
encodeURI() kodiert nicht A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
Verwenden Sie es, wenn Ihre Eingabe eine vollständige URL ist, wie ' https://searchexample.com/search?q=wiki '
-
encodeURIComponent() wird A-Z a-z 0-9 - _ nicht kodieren. ! ~ * ' ( ) Verwenden Sie es, wenn Ihre Eingabe Teil einer vollständigen URL ist e
const queryStr = encodeURIComponent(someString)
xkr.us hat eine großartige Diskussion mit Beispielen. Um ihre Zusammenfassung zu zitieren:
Die Methode escape() kann nicht auf der Serverseite als Leerzeichen interpretiert wird und auch von Formularen mit Leerzeichen in ihren Feldern. Aufgrund dieses Mangels und der Tatsache, dass Tatsache, dass diese Funktion Nicht-ASCII-Zeichen nicht korrekt behandelt nicht korrekt behandelt, sollten Sie die Verwendung von escape() wann immer möglich vermeiden. Die beste Alternative ist normalerweise encodeURIComponent().
escape() wird nicht kodieren: @*/+
Die Verwendung der Methode encodeURI() ist ein wenig spezieller als escape() insofern, als sie URIs kodiert, im Gegensatz zum Querystring, der Teil einer URL ist. Verwenden Sie diese Methode, wenn Sie einen String kodieren müssen, der für eine Ressource kodieren müssen, die URIs verwendet und bei der bestimmte Zeichen unkodiert bleiben müssen. Beachten Sie, dass diese Methode nicht das Zeichen ' nicht kodiert, da es ein gültiges Zeichen in URIs ist.
encodeURI() wird nicht verschlüsseln: ~!@#$&*()=:/,;?+'
Schließlich sollte in den meisten Fällen die Methode encodeURIComponent() verwendet werden verwendet werden, wenn eine einzelne Komponente eines URIs kodiert werden soll. Diese Methode kodiert bestimmte Zeichen, die normalerweise als Sonderzeichen für URIs erkannt werden URIs erkannt werden, so dass viele Komponenten enthalten sein können. Beachten Sie, dass diese Methode das Zeichen ' nicht kodiert, da es ein gültiges Zeichen in URIs ist.
encodeURIComponent() wird nicht kodieren: ~!*()'
encodeURI y encodeURIComponent werden für unterschiedliche Zwecke verwendet.
Einige der Unterschiede sind
-
encodeURI wird verwendet, um eine vollständige URL kodieren während encodeURIComponent wird verwendet für Kodierung einer URI-Komponente wie zum Beispiel eine Abfragezeichenfolge.
-
Es gibt 11 Zeichen die nicht durch encodeURI, sondern durch encodeURIComponent kodiert werden. Liste:
Zeichen
encodeURI
encodeURIComponent
#
#
%23
$
$
%24
&
&
%26
+
+
%2B
,
,
%2C
/
/
- %2F
%3A
;
;
%3B
\=
\=
%3D
?
?
%3F
@
@
%40
Anmerkungen:
encodeURIComponent verschlüsselt nicht -_.!~*'(). Wenn Sie wollen, dass diese Zeichen kodiert werden, müssen Sie sie durch eine entsprechende UTF-8-Zeichenfolge ersetzen
Wenn Sie mehr über encodeURI und encodeURIComponent erfahren möchten, lesen Sie bitte den Referenzlink. Referenz-Link
- See previous answers
- Weitere Antworten anzeigen