URL kodieren / dekodieren
KodierungPercent-Encoding für URL-Komponenten und vollständige URLs (RFC 3986).
Auf dieser Seite
Was ist URL-Kodierung?#
URLs dürfen nur einen kleinen Satz nicht-escapeter Zeichen enthalten — ASCII-Buchstaben, Ziffern und eine Handvoll Symbole wie -, _, ., ~. Alles andere (ein Leerzeichen, ein &, ein chinesisches Zeichen, ein Emoji, sogar ein /, wenn es als Daten statt als Pfadtrenner gemeint ist) muss als prozent-kodiertes Escape geschrieben werden: % gefolgt von zwei Hex-Ziffern, etwa %20 für ein Leerzeichen oder %E4%B8%AD für die UTF-8-Bytes von 中. URL-Kodierung ist die mechanische Übersetzung, die beliebigen Text sicher in einer URL reisen lässt.
Es gibt zwei unterschiedliche Aufgaben, die ständig verwechselt werden, und dieses Werkzeug legt beide über die Auswahl Optionen frei:
- Modus Komponente (der JavaScript-Pfad
encodeURIComponent) escapet alles, was kein Buchstabe, keine Ziffer und keines von- _ . ! ~ * ' (ist. Verwenden Sie dies, wenn der Text ein einzelnes Datenstück ist, das Sie gleich in einen Query-Parameter, ein Pfad-Segment oder ein Fragment einfügen — sodass Zeichen mit struktureller Bedeutung (/ ? & = #) zu harmlosemm wörtlichem Text reduziert werden. - Modus Vollständige URL (der Pfad
encodeURI) escapet dieselben unsicheren Bytes, lässt aber die strukturellen Zeichen der URL selbst bewusst unangetastet (: / ? # [ ] @ ! $ & ' ( ) * + , ; =). Verwenden Sie dies, wenn Sie eine vollständige URL haben, die bereits die richtige Form hat, und nur die wörtlichen Zeichen darin bereinigen wollen.
Dekodieren kehrt beide Formen um. Wenn die Eingabe ein fehlerhaftes Escape enthält wie %GG (kein gültiges Hex) oder ein nacktes %, zeigt das Werkzeug den Fehler und zeigt auf die fehlerhafte Position, statt zu raten.
Verwendung#
- Wählen Sie Kodieren oder Dekodieren am Umschalter oben links.
- Wählen Sie unter Optionen Komponente für einen einzelnen Wert, den Sie in eine URL einfügen, oder Vollständige URL für eine gesamte URL, die ihre Struktur behalten soll.
- Fügen Sie in die Eingabe-Fläche links ein.
- Lesen Sie das Ergebnis aus der Ausgabe-Fläche rechts und klicken Sie auf Kopieren.
- Beispiel lädt einen Demonstrationsstring; Leeren setzt die Flächen zurück.
Eckpunkte#
- Zwei echte Bereiche, nicht einer. Komponente versus Vollständige URL spiegelt exakt die Unterscheidung
encodeURIComponent/encodeURI, sodass Sie einen einzelnen Wert escapen oder eine ganze URL aufräumen können, ohne Werkzeuge zu wechseln. - UTF-8 als Standard. Nicht-ASCII-Zeichen werden als ihre UTF-8-Bytefolge kodiert (der Standard seit RFC 3986), sodass
中文zu%E4%B8%AD%E6%96%87wird, nicht zu einem Single-Escape-Latin-1-Blob. - Fehler zeigen auf die Position. Wenn die Dekodierung auf ein ungültiges
%-Escape stößt, meldet die Statuszeile, wo es ist, statt die gesamte Eingabe wegzuwerfen. - Läuft lokal. Alles passiert in Ihrem Browser; nichts, was Sie einfügen, wird hochgeladen.
Konkretes Beispiel#
Das Kodieren des Fragments a/b?c=d & e mit dem Modus Komponente ergibt:
a%2Fb%3Fc%3Dd%20%26%20e
Beachten Sie, dass / zu %2F wird, ? zu %3F, = zu %3D, das Leerzeichen zu %20 und & zu %26 — jedes Zeichen, das sonst als URL-Struktur gelesen werden könnte, wurde neutralisiert. Das ist die korrekte Form, um den gesamten String in einen einzigen Query-Wert zu stopfen.
Schalten Sie nun in den Modus Vollständige URL um und kodieren Sie eine vollständige URL:
https://example.com/path?q=hello world&lang=zh CN
Das Ergebnis behält Protokoll, Schrägstriche, ? und & intakt und escapet nur die wörtlichen Leerzeichen:
https://example.com/path?q=hello%20world&lang=zh%20CN
Das ist der Unterschied zwischen den beiden Modi auf einen Blick: Komponente flattet alles zu Daten, Vollständige URL bewahrt das URL-Gerüst und bereinigt nur die Bytes, die es nötig hatten.
FAQ#
Komponente oder Vollständige URL — wie entscheide ich?#
Wenn Sie einen Query-String bauen und einer der Werte aus Benutzereingabe stammt, kodieren Sie diesen Wert mit Komponente. Wenn Sie bereits eine voll geformte URL haben, die einfach ein paar fremde Zeichen enthält (Leerzeichen, Akzente), schicken Sie das Ganze durch Vollständige URL. Ein nützlicher Test: braucht die Ausgabe ihre ?, & und / noch, um als Link zu funktionieren? Dann Vollständige URL. Sind diese Zeichen tatsächlich Teil der Daten? Dann Komponente.
Mein dekodierter String enthält %GG und das Werkzeug bricht mit Fehler ab. Warum?#
% muss immer von zwei hexadezimalen Ziffern gefolgt werden. %GG ist kein gültiges Hex, deshalb lehnt der Dekodierer es ab und meldet die Position — dieselbe Eingabe, die in Code eine URIError werfen würde. Korrigieren Sie entweder die Quelle, sodass sie %25 sendet (die kodierte Form eines literalen %), oder beheben Sie das fehlerhafte Escape.
Soll ich vor oder nach dem Aufbau des Query-Strings kodieren?#
Kodieren Sie jeden Wert bevor Sie ihn mit = und & verbinden. Wenn Sie zuerst ?q=a & b bauen und dann das Ganze mit dem Modus Komponente kodieren, werden auch = und & escaped und der Server sieht sie nicht mehr als Trenner. Kodieren Sie die Stücke, bauen Sie dann zusammen.
Behandelt das Unicode so wie Browser?#
Ja. Moderne Browser und Server erwarten, dass Prozent-Escapes UTF-8-Bytes tragen, und genau das gibt dieses Werkzeug aus — 中 wird zu %E4%B8%AD. Wenn Sie ein altes System debuggen, das eine veraltete Einzelbyte-Kodierung erwartet (Latin-1, GBK etc.), weichen die Bytes ab und Sie benötigen ein kodierungsspezifisches Werkzeug.