URL Encoder
Prozentkodierung spezieller Zeichen in URLs oder einzelnen URI-Komponenten, damit sie sicher in HTTP-Anfragen, Abfragezeichenfolgen und Formulardaten übertragen werden können. Entspricht RFC 3986.
Ein Leerzeichen in einer URL-Abfragezeichenfolge bricht die Anfrage stillschweigend. RFC 3986 (Uniform Resource Identifier: Generic Syntax) definiert, welche Zeichen in einer URL sicher sind und welche prozentkodiert werden müssen. Die Prozentkodierung ersetzt jedes unsichere Byte durch %, gefolgt von zwei Großbuchstaben hexadezimalen Ziffern. Dieser browserbasierte Encoder wendet RFC 3986 sofort an, ohne Ihre Daten irgendwo zu übertragen. Verwenden Sie ihn, um vollständige URLs oder einzelne Abfrageparameterwerte zu kodieren und erhalten Sie jedes Mal ein standardskonformes Ergebnis.
So kodieren Sie eine URL
- Fügen Sie die URL oder den Text in das Eingabefeld ein.
- Wählen Sie den Voll-URL Modus, um nur unsichere Zeichen zu kodieren, oder den Komponenten Modus, um alle Sonderzeichen einschließlich
&und=zu kodieren. - Die prozentkodierte Ausgabe erscheint im Ergebnisfeld.
- Kopieren Sie die kodierte Zeichenfolge zur Verwendung in Ihrer Anfrage, Ihrem Code oder Ihrer Dokumentation.
Verständnis der Prozentkodierung
Der RFC 3986 Standard
RFC 3986 (IETF, 2005) definiert zwei Zeichengruppen in einer URI. Unreservierte Zeichen (A-Z a-z 0-9 - _ . ~) können ohne Kodierung erscheinen. Reservierte Zeichen (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) haben eine spezielle strukturelle Bedeutung und müssen je nach Kontext möglicherweise kodiert werden. Jedes andere Zeichen - einschließlich Leerzeichen, nicht-ASCII Unicode und Zeichen außerhalb dieser Gruppen - muss prozentkodiert werden.
encodeURI vs encodeURIComponent
JavaScript bietet zwei Kodierungsfunktionen. encodeURI() kodiert eine vollständige URL und lässt reservierte Zeichen intakt, da sie strukturelle Rollen spielen. encodeURIComponent() kodiert auch strukturelle Zeichen und behandelt sie als literale Daten - es ist für einzelne Abfrageparameternamen und -werte gedacht, bei denen & und = die URL-Syntax brechen würden. Der Voll-URL-Modus dieses Tools entspricht encodeURI; der Komponentenmodus entspricht encodeURIComponent.
Beispiel
Eingabe
Hello World! @2024
Ausgabe (Komponentenmodus)
Hello%20World!%20%402024
Das Leerzeichen wird als %20 kodiert (RFC 3986 Standard); @ wird zu %40. Das Ausrufezeichen ist in einigen Kontexten ein unreserviertes Zeichen und kann je nach Modus kodiert oder nicht kodiert werden.
Häufige Anwendungsfälle
- Werte von Abfrageparametern - Kodieren Sie Werte, die
&,=oder+enthalten, bevor Sie sie an eine URL anhängen - Suchmaschinenabfragen - Kodieren Sie die Benutzersucheingabe, bevor Sie eine Weiterleitungs-URL erstellen
- API-Anforderungsaufbau - Kodieren Sie Pfadsegmente, die Schrägstriche, Leerzeichen oder Sonderzeichen enthalten
- OAuth-Parameter - OAuth 1.0 Signaturbasiszeichenfolgen erfordern Prozentkodierung gemäß RFC 5849
Häufige Fehler
- Doppelte Kodierung - Wenn ein Wert bereits prozentkodiert ist, wird er erneut kodiert, wodurch das
%selbst kodiert wird, was%2520anstelle von%20ergibt. - Voll-URL-Modus für Parameterwerte verwenden - Der Voll-URL-Modus lässt
&und=unkodiert, was die Syntax der Abfragezeichenfolge bricht; verwenden Sie den Komponentenmodus für Parameterwerte. - Nicht-ASCII-Zeichen vergessen - Nicht-ASCII-Text muss zuerst in UTF-8-Bytes konvertiert werden, dann wird jedes Byte separat prozentkodiert.
Um den Prozess umzukehren, verwenden Sie den URL Decoder. Für Binärdaten, die in URL-Abfrageparametern transportiert werden, kodieren Sie zuerst mit dem Base64 Encoder im URL-sicheren Modus, dann ist die Ausgabe bereits URL-sicher, ohne zusätzliche Prozentkodierung.
Häufig gestellte Fragen
Was ist der Unterschied zwischen URL-Kodierung und Base64-Kodierung?
Die Prozentkodierung ersetzt unsichere Zeichen durch %XX Hex-Sequenzen und belässt sichere Zeichen unverändert, sodass die Ausgabelänge ähnlich der Eingabe ist. Base64 konvertiert alle Daten in ein 64-Zeichen-Alphabet, was die Größe um 33% erhöht, aber sicherstellt, dass das Ergebnis nur sichere ASCII-Zeichen enthält. Prozentkodierung macht bestimmte Zeichen URL-sicher; Base64 kodiert beliebige Binärdaten als Text.
Wann sollte ich encodeURI vs encodeURIComponent in JavaScript verwenden?
encodeURI() dient zur Kodierung einer vollständigen URL - es bewahrt strukturelle Zeichen wie : / ? # & =. encodeURIComponent() ist für die Kodierung einzelner Werte innerhalb einer URL - es kodiert strukturelle Zeichen, sodass sie als literale Daten und nicht als URL-Syntax behandelt werden. Im Zweifelsfall verwenden Sie encodeURIComponent() für alle benutzereingebenen Daten.Warum wird ein Leerzeichen in einigen Kodierern zu %20, in anderen aber zu +?
%20 ist die RFC 3986 Prozentkodierung für ein Leerzeichen und ist korrekt für URI-Pfadsegmente und Abfragewerte. Das + Zeichen, das ein Leerzeichen darstellt, ist spezifisch für application/x-www-form-urlencoded (HTML-Formularübermittlungen), die vor RFC 3986 existierten. Beide sind in ihren jeweiligen Kontexten gültig, aber %20 ist der universelle Standard außerhalb von HTML-Formularen.Funktioniert die URL-Kodierung für nicht-ASCII-Zeichen?
Ja. Nicht-ASCII-Zeichen werden zuerst in UTF-8-Bytes konvertiert, dann wird jedes Byte separat prozentkodiert. Das Zeichen ş (U+015F) wird zu %C5%9F. Das chinesische Zeichen 中 (U+4E2D) wird zu %E4%B8%AD. Moderne Browser und Server erwarten alle UTF-8-Kodierung für nicht-ASCII-Zeichen in URLs.
Wird meine URL-Daten an Ihre Server gesendet, wenn ich dieses Tool benutze?
Nein. Alle Kodierungen verwenden encodeURI() oder encodeURIComponent(), die lokal in Ihrem Browser ausgeführt werden. URLs, Abfrageparameter, Authentifizierungstoken und andere Daten, die Sie einfügen, werden niemals an unsere Server übertragen.