Skip to main content

Bulk URL Encode / Decode

Encode or decode many URLs at once. Paste a newline-separated list and the tool processes each line in parallel, preserving order and blank lines.

Geprüft von · Zuletzt geprüft

So verwendest du den Massen-URL-Kodierer und -Dekodierer

  1. Füge deine Liste in das Textfeld ein. Eine URL oder prozent-kodierter String pro Zeile; Leerzeilen werden unverändert weitergegeben, sodass Eingabe und Ausgabe zeilenausgerichtet bleiben.
  2. Wähle die Richtung. Kodieren wandelt Rohtext in prozent-kodierte Form um. Dekodieren kehrt es um.
  3. Schalte den vollständigen URL-Modus um, wenn deine Eingaben bereits vollständige URLs (mit Schema, Host und Pfad) sind und du nur die strikt unsicheren Zeichen escapen möchtest. Ausgeschaltet, verwendet das Werkzeug encodeURIComponent; eingeschaltet, verwendet es encodeURI.
  4. Kopiere das Ausgabepanel. Gleiche Zeilenanzahl wie die Eingabe, gleiche Reihenfolge, Leerzeilen an denselben Positionen beibehalten. Füge in eine Tabellenkalkulation für eine Zwei-Spalten-Referenz, in eine Fixture-Datei oder zurück in dein Migrationsskript ein.

Was das Werkzeug im Hintergrund tut

Die Komponente teilt die Eingabe bei \n auf und verarbeitet jede Zeile durch dieselben Kodierungs-Helfer wie das Einzeleingabe-URL-Kodierungs-/Dekodierungs-Werkzeug: entweder encodeURIComponent / decodeURIComponent (Komponentenmodus, der strenge Standard) oder encodeURI / decodeURI (vollständiger URL-Modus). Beide sind Teil der ECMAScript-Standardbibliothek und sind seit ES3 über alle Browser hinweg stabil. Zeilen, die nicht dekodiert werden können (fehlerhafte Prozentsequenzen, bloßes % oder %XX wo XX kein Hex ist), geben einen leeren String aus und die erste fehlerhafte Zeile wird im Status-Panel gemeldet; der Rest des Stapels wird fortgesetzt, was das am wenigsten überraschende Verhalten für Migrationsarbeiten ist.

Die beiden Kodierungsbereiche unterscheiden sich darin, welche Zeichen sie als reserviert behandeln. encodeURIComponent escaped alles außer dem uneingeschränkten Satz, der durch RFC 3986 definiert ist (A-Z, a-z, 0-9 und - _ . ! ~ * ' ( )), sodass es sicher an jeder URL-Position verwendet werden kann. encodeURI lässt zusätzlich die URL-reservierten Satzzeichen (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) unberührt, was du möchtest, wenn die Eingabe bereits eine geformte URL ist und du nur Leerzeichen und Akzente im Pfad escapen musst.

Wann dieses Werkzeug seinen Nutzen zeigt

  • Eine URL-Liste aus einem alten CMS migrieren, bei dem Slugs Unicode-Zeichen enthielten und das neue System prozent-kodierte benötigt.
  • Einen CSV-Export von Analysedaten bereinigen, bei dem jede URL doppelt kodiert ist; zweimaliges Dekodieren bringt das Original zum Vorschein.
  • Eine Fixture-Datei für Integrationstests vorbereiten, bei der jede URL ohne manuelles Bearbeiten durch die Kodierung hin-und-zurück-reisen muss.
  • Überprüfen, ob die URL-Kodierung eines Backends (Python urllib.parse.quote, Ruby CGI.escape, Java URLEncoder.encode) mit dem übereinstimmt, was der Browser erzeugt; kleine Unterschiede bei + und %20 beißen während Integrationen.
  • Eine Spalte fehler-tracking-URLs aus einem Sentry- oder Datadog-Export dekodieren, um herauszufinden, welche Seite tatsächlich fehlgeschlagen ist.
  • Eine Sitemap-Import-Fixture aus einer manuell bearbeiteten URL-Liste erstellen, bei der einige Einträge Leerzeichen oder Anführungszeichen enthalten.

Häufige Fallstricke und Randfälle

  • Leerzeichen werden zu %20, nicht zu +. Die Query-String-Konvention der Verwendung von + für Leerzeichen ist älter als RFC 3986 und gilt nur innerhalb von application/x-www-form-urlencoded-Bodys. encodeURIComponent gibt immer %20 aus; wenn du + benötigst, post-verarbeite mit .replace(/%20/g, '+').
  • Pluszeichen in Eingaben werden NICHT als Leerzeichen dekodiert. decodeURIComponent("a+b") gibt "a+b" zurück, nicht "a b". Wenn deine Quelle formular-kodierte Daten ausgegeben hat, wechsle zu einem formular-bewussten Dekodierer, bevor du durch dieses Werkzeug pipest.
  • Bereits-kodierte Eingaben werden still doppelt-kodiert. encodeURIComponent("%20") gibt "%2520" zurück, weil das % selbst reserviert ist. Wenn deine Liste möglicherweise bereits kodiert ist, dekodiere zuerst und kodiere erneut.
  • Komponentenmodus escaped zu aggressiv für vollständige URLs. Das Kodieren von https://example.com/pfad im Komponentenmodus erzeugt https%3A%2F%2Fexample.com%2Fpfad, was selten gewünscht ist. Schalte den vollständigen URL-Modus für bereits geformte URLs um.
  • Unicode außerhalb der BMP benötigt Surrogatpaar-Behandlung. encodeURIComponent gibt die UTF-8-Bytes der Vier-Byte-Sequenz aus; alte Server, die WTF-8 oder CESU-8 erwarten, werden es falsch interpretieren. Das beißt bei Emoji und seltenen CJK-Zeichen.
  • Harte Zeilenbegrenzungen. Das Werkzeug läuft synchron, sodass 10.000+ Zeilen langer URLs den Tab kurz einfrieren können. Für größere Stapel wechsle zur CLI.

Prozent-Kodierung und RFC 3986

Prozent-Kodierung (auch URL-Kodierung genannt) ist durch RFC 3986, die URI-generische Syntax, definiert. Die Regel ist einfach: Jedes Byte, das nicht im uneingeschränkten Satz ist, wird durch %XX ersetzt, wobei XX das Großbuchstaben-Hexadezimal des Byte-Werts ist. Mehr-Byte-Zeichen werden als UTF-8-Byte-Sequenz kodiert, dann wird jedes Byte prozent-kodiert. Der reservierte Satz teilt sich in zwei Teilmengen: gen-delimiters (: / ? # [ ] @) und sub-delimiters (! $ & ' ( ) * + , ; =); der JavaScript-encodeURI-Helfer bewahrt beide, während encodeURIComponent sie alle escaped. Die Aufteilung existiert, weil reservierte Zeichen strukturelle Bedeutung in URL-Komponenten tragen, und das Escapen innerhalb einer Komponente der einzige Weg ist, Benutzerdaten sicher einzubetten.

Alternativen und wann sie dieses Werkzeug schlagen

Für sehr große Stapel verwende eine CLI: jq -R '@uri' für jede Zeile oder Pythons urllib.parse.quote / unquote in einer Einzeiler-Lösung. AWK und sed haben beide URL-Encode-Helfer als erstklassige Snippets in ihren Kochbüchern. Innerhalb von Node hat jede Datei in deinem Projekt bereits Zugang zum selben encodeURIComponent, den der Browser verwendet; ein 5-Zeilen-Skript verarbeitet Stapel ohne den Main-Thread-Blockierung. Das On-Page-Massen-Werkzeug gewinnt, wenn du eine Liste in deiner Zwischenablage hast, einen schnellen visuellen Vergleich zwischen Eingabe und Ausgabe möchtest und keine privaten URLs auf einen Remote-Dienst wie urlencoder.org hochladen möchtest.

Häufig gestellte Fragen

Wie unterscheidet sich der Massen-Modus von der Einzeleingabe-Seite?

Gleiche Engine, Stapeleingabe. Füge eine zeilengetrennte Liste von URLs (oder prozentkodierten Strings) in das Textfeld ein und jede Zeile wird unabhängig verarbeitet. Die Ausgabe hat dieselbe Anzahl von Zeilen in derselben Reihenfolge, sodass du beide Spalten für eine Seite-an-Seite-Referenz in eine Tabellenkalkulation einfügen kannst.

Was passiert, wenn eine Zeile nicht dekodiert werden kann?

Diese Zeile wird in der Ausgabe leer angezeigt und der Bereich meldet die erste fehlerhafte Zeile im Fehlerband. Der Rest der Liste wird weiterhin kodiert/dekodiert - eine fehlerhafte Zeile bricht den Stapel nicht ab. Das ist das am wenigsten überraschende Verhalten für Massen-Migrationstapel.

Komponenten- oder Vollständige-URL-Modus?

Schalte "Vollständige URL-Modus" um, um zwischen <code>encodeURIComponent</code> und <code>encodeURI</code> zu wechseln. Der Komponentenmodus ist die konservative Wahl für Query-String-Werte; der vollständige URL-Modus bewahrt <code>:</code>, <code>/</code>, <code>?</code>, <code>#</code> für bereits geformte URLs.

Gibt es eine harte Zeilenbegrenzung?

Das Werkzeug läuft synchron im Haupt-Thread, sodass sehr große Einfügungen (10.000+ Zeilen langer URLs) den Tab kurz einfrieren können. Für Stapelgrößen dieser Größe verwende besser eine CLI wie <code>jq -R</code> + <code>@uri</code> oder eine schnelle Shell-Schleife mit <code>printf %s | python3 -c ...</code>.

Lädt die Seite meine Liste irgendwo hoch?

Nein. Der Batch-Kodierer ist dieselbe Preact-Komponente wie die Einzeleingabe, nur mit <code>bulkMode</code> eingeschaltet. Es gibt keinen Fetch-Aufruf oder Analytics-Beacon für die URLs, die du einfügst.

Mehr Developer Tools