Kodieren oder dekodieren Sie URLs und URL-Parameter. Schnell, privat und einfach zu verwenden.
Parameterwert
red & blueCodierter Wert
red%20%26%20blueFür Parameterwerte verwenden Sie encodeURIComponent. Eine ganze URL zu codieren verändert ihre Trennzeichen.
Der URL-Encoder wandelt Text in eine Form um, die sicher in eine URL eingebettet werden kann, und dekodiert prozentkodierte Strings zurück in lesbaren Text. Fügen Sie einen Query-Wert mit Leerzeichen, Ampersand oder chinesischen Zeichen ein und erhalten Sie ein gültiges, kopierfertiges Ergebnis. Er ist ein tägliches Werkzeug für alle, die Links, API-Aufrufe oder Tracking-URLs bauen, und für alle, die eine URL aus einem Log oder Analysebericht lesen wollen, in dem alles unter Prozentzeichen begraben ist.
Die beiden Typen verhalten sich bei reservierten Zeichen unterschiedlich. Genau diese Unterscheidung verursacht die meisten URL-Fehler.
| Eingabe | Parameterwert (encodeURIComponent) | Vollständige URL (encodeURI) |
|---|---|---|
a b&c=d | a%20b%26c%3Dd | a%20b&c=d |
https://x.com/p?a=1 | https%3A%2F%2Fx.com%2Fp%3Fa%3D1 | https://x.com/p?a=1 |
中 | %E4%B8%AD | %E4%B8%AD |
a+b | a%2Bb | a+b |
Der Parameterwert-Modus behandelt die Eingabe als Daten und maskiert daher &, =, /, ? und :, die sonst die Bedeutung der URL ändern würden. Der Vollständige-URL-Modus behandelt die Eingabe als URL und bewahrt diese Strukturzeichen; kodiert werden nur Leerzeichen und Nicht-ASCII-Text. Den falschen Modus zu wählen, ist die übliche Ursache für einen Link, der einen Parameter stillschweigend in zwei aufteilt.
URLs wurden um einen kleinen ASCII-Zeichensatz herum entworfen, und mehrere dieser Zeichen haben strukturelle Bedeutung: ? beginnt die Query, & trennt Parameter, = weist einen Wert zu, und # beginnt ein Fragment. Jedes Zeichen außerhalb des sicheren Satzes – Leerzeichen, Anführungszeichen, Klammern und die gesamte nicht-ASCII-Welt – muss als Prozentzeichen gefolgt vom hexadezimalen UTF-8-Bytewert dargestellt werden. Nicht-ASCII-Text wird nach der UTF-8-Konvertierung Byte für Byte kodiert, weshalb ein chinesisches Zeichen zu drei Prozent-Tripletts wird. Die Kodierung ist umkehrbar und rein mechanisch, weshalb ein Decoder den Originaltext immer zurückgewinnen kann, solange der String wohlgeformt ist.
coffee & tea für einen Query-Parameter kodieren. Der Parameterwert-Modus ergibt coffee%20%26%20tea, das Sie sicher als ?q=coffee%20%26%20tea anhängen können. Der Vollständige-URL-Modus würde das & belassen und Ihren Wert in zwei Parameter aufteilen.https://example.com/search?q=a b&lang=en kodieren. Der Vollständige-URL-Modus ergibt https://example.com/search?q=a%20b&lang=en und bewahrt Schema, Pfad und Query-Trenner, während nur das Leerzeichen maskiert wird.中文 kodieren. Beide Modi liefern %E4%B8%AD%E6%96%87, ein Prozent-Triplett pro UTF-8-Byte. Das Dekodieren dieses Strings ergibt 中文.😀 (U+1F600) kodieren. Seine UTF-8-Bytes sind F0 9F 98 80, die Ausgabe lautet also %F0%9F%98%80.%E4%B8%AD%E6%96%87 im Parameterwert-Modus dekodieren, um 中文 zu erhalten, oder einen teilweise kodierten Link dekodieren, um zu prüfen, wohin eine Weiterleitung tatsächlich zeigte.Beide Funktionen erzeugen %20 für ein Leerzeichen, und beide belassen ein wörtliches + im Vollständige-URL-Modus als + oder kodieren es im Parameterwert-Modus zu %2B. Der verwirrende Fall ist die Formularkodierung: GET-Übermittlungen von HTML-Formularen und application/x-www-form-urlencoded-Payloads verwenden + für ein Leerzeichen. Kommt ein Wert aus einem Formular und enthält +, wird dieses Tool ihn nicht in ein Leerzeichen verwandeln – erst dekodieren, dann Pluszeichen manuell ersetzen. Die beiden Konventionen auseinanderzuhalten, ist die häufigste Quelle der Verwirrung „mein Suchbegriff wurde zu coffee+tea“.
RFC 3986 teilt URL-Zeichen in nicht reservierte und reservierte Mengen. Nicht reservierte Zeichen – Buchstaben, Ziffern, Bindestrich, Unterstrich, Punkt und Tilde – müssen nie kodiert werden. Reservierte Zeichen zerfallen in zwei Gruppen: gen-delims wie :, /, ?, #, [ und @, die die Teile einer URL trennen, und sub-delims wie !, $, &, ', (, ), *, +, ,, ; und =, die innerhalb dieser Teile Bedeutung haben. Wird ein reserviertes Zeichen als Daten statt als Trenner verwendet, muss es prozentkodiert werden. Genau das ist die Aufgabe des Parameterwert-Modus, während der Vollständige-URL-Modus für Strings gedacht ist, in denen die reservierten Zeichen noch als Trenner wirken.
://, ?- und &-Trenner zerstören.& oder = als Trenner wirken lassen.%25 hinzufügt und sichtbar falsche Ausgaben wie %2520 erzeugt, wo ein Leerzeichen erwartet wurde.!, ', (, ) und * würden immer maskiert. Der Parameterwert-Modus belässt sie, sodass ein strikt RFC-3986-konformes System das Ergebnis weiterhin ablehnen kann.% sofort einen Fehler auslöst statt eines Teilergebnisses.Den Parameterwert-Modus (encodeURIComponent) für einen einzelnen Wert nutzen, den Sie nach einem ? oder & platzieren, weil er auch reservierte Zeichen wie &, = und / maskiert, die sonst als Trenner gelesen würden. Den Vollständige-URL-Modus (encodeURI) nur verwenden, wenn Sie eine komplette URL kodieren und ihre Struktur intakt halten müssen.
Dieses Tool folgt den Kodierregeln von JavaScript, und encodeURIComponent wie encodeURI stellen ein Leerzeichen als %20 dar. Die Konvention Plus-statt-Leerzeichen stammt aus der Übermittlung von HTML-Formularen (application/x-www-form-urlencoded), nicht von diesen Funktionen.
Nein. decodeURIComponent lässt ein wörtliches + unverändert und macht %20 zu einem Leerzeichen. Haben Sie einen formularcodierten Query-String, in dem + ein Leerzeichen bedeutet, ersetzen Sie die Pluszeichen nach dem Dekodieren manuell durch Leerzeichen.
Ein einzelnes Prozentzeichen oder eine abgeschnittene Sequenz wie %E4 ist keine gültige Prozentkodierung, daher wirft der native Decoder einen URIError. Suchen Sie nach verirrten %-Zeichen oder nach Text, der nur teilweise kodiert wurde.
Das Prozentzeichen selbst wird als %25 kodiert, daher ergibt das Kodieren von %20 erneut %2520. Das ist der Doppelkodierungsfehler, und er tritt meist auf, wenn ein Wert in einer Weiterleitungskette oder Vorlage zweimal durch einen Encoder läuft.
Beide Modi belassen die nicht reservierte Menge A-Z, a-z, 0-9, -, _, . und ~. Der Parameterwert-Modus belässt zusätzlich !, ', (, ) und *. Der Vollständige-URL-Modus bewahrt darüber hinaus die reservierten Zeichen, die einer URL ihre Struktur geben, etwa :, /, ?, #, &, = und +.
Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert