Ansicht in Deutsch Auf Englisch wechseln

URL-Encoder & Decoder

Prozent-kodieren oder dekodieren Sie Strings zur sicheren Verwendung in URLs, Query-Parametern und Pfadsegmenten.

  1. Fügen Sie den String, den Sie kodieren (oder dekodieren) möchten, in das obige Feld ein.
  2. Wählen Sie Komponente für einen einzelnen Query-Wert oder ein Pfadsegment, oder Vollständige URL für eine ganze URL, die nur ein paar unsichere Zeichen hat.
  3. Klicken Sie auf Kodieren oder Dekodieren. Die Ausgabe ersetzt die Eingabe an Ort und Stelle.
  4. Kopieren Sie das Ergebnis oder klicken Sie auf Leeren, um neu zu beginnen.
Was macht es?

URL-/Prozent-Kodierung ersetzt Zeichen, die in einer URL unsicher oder mehrdeutig sind, durch % gefolgt von ihrem UTF-8-Byte-Wert in hex. Komponenten-Modus verwendet encodeURIComponent() und kodiert jedes reservierte Zeichen — korrekt für Werte, die Sie in einen Query-String oder Pfad einbetten. Vollständige-URL-Modus verwendet encodeURI(), das URL-strukturelle Zeichen wie :/?#&= bewahrt.

Beispiel

Eingabe:

hello world & café / 日本語

Als Komponente kodiert:

hello%20world%20%26%20caf%C3%A9%20%2F%20%E6%97%A5%E6%9C%AC%E8%AA%9E

Als Vollständige URL kodiert:

hello%20world%20&%20caf%C3%A9%20/%20%E6%97%A5%E6%9C%AC%E8%AA%9E

Beachten Sie, dass Vollständige URL & und / in Ruhe ließ, weil sie in einer URL strukturelle Bedeutung haben.

Häufige Fehler und Fallstricke

Die meisten Kodierungsprobleme kommen daher, den falschen Modus zu wählen oder das Tool zweimal auf derselben Eingabe auszuführen. Die Punkte unten decken die Fälle ab, die wir am häufigsten sehen.

  • encodeURI für Query-Werte verwenden. encodeURI("a&b=c") ergibt a&b=c (unverändert), was den Query-String bricht. Verwenden Sie Komponenten-Modus (encodeURIComponent) für Werte.
  • Doppelkodierung. hello%20world ein zweites Mal zu kodieren produziert hello%2520world. Dekodieren Sie zuerst oder überspringen Sie eine Schicht.
  • # vergessen. Ein # innerhalb eines Query-Wertes wird als Fragment-Start behandelt, es sei denn, es wird als %23 kodiert.
  • Pluszeichen-Verwirrung. + bedeutet Leerzeichen in form-kodierten Bodies, ist aber ein wörtliches + in einem URL-Pfad oder -Query. Um ein echtes Pluszeichen in einem Query-Wert zu senden, kodieren Sie es als %2B.
  • Fehlgebildete Prozentsequenz. Ein wörtliches %, das nie kodiert wurde, führt dazu, dass decodeURIComponent URI malformed wirft. Entweder kodieren Sie das % als %25, oder entfernen Sie einzelne Prozente vor dem Dekodieren.
  • UTF-8 vs Latin-1 Legacy-Server. Dieses Tool verwendet immer UTF-8. Einige sehr alte Systeme erwarten Latin-1 / windows-1252 — dort ist é %E9, nicht %C3%A9. Wenn Sie Mojibake sehen, ist das andere Ende nicht UTF-8.
Häufig gestellte Fragen

Was ist der Unterschied zwischen encodeURI und encodeURIComponent?

encodeURIComponent escaped alles, was kein Buchstabe, keine Ziffer oder keines von -_.!~*'() ist, also sicher für einzelne Query-Werte und Pfadsegmente. encodeURI lässt URL-reservierte Zeichen wie :/?#&= in Ruhe, ist also für die Kodierung einer ganzen URL, die bereits Struktur hat. Verwenden Sie Komponente 95% der Zeit; verwenden Sie Vollständige URL nur, wenn Sie eine überwiegend gültige URL mit verirrten Leerzeichen oder Unicode haben.

Welche Zeichen müssen tatsächlich in einem Query-String kodiert werden?

Die Query-String-Trennzeichen & und = müssen innerhalb eines Wertes kodiert werden (sonst sehen sie wie Trennzeichen aus). Leerzeichen werden zu %20 oder +. Der #-Fragment-Marker muss kodiert werden. Außerdem: /, ?, alles Nicht-ASCII und Steuerzeichen. encodeURIComponent verarbeitet all dies; encodeURI lässt &, =, /, ?, # unkodiert, weil sie URL-strukturell sind.

Warum wird meine URL doppelt kodiert?

Doppelkodierung passiert, wenn Sie einen bereits kodierten Wert kodieren. Ein Leerzeichen wird zu %20, dann wird das % selbst zu %25, was %2520 ergibt. Normalerweise verursacht durch das erneute Durchlaufen einer bereits kodierten URL durch encodeURIComponent, oder durch ein Framework, das über Ihrer manuellen Kodierung automatisch kodiert. Einmal dekodieren und sauber neu kodieren, oder eine Schicht überspringen.

Wie werden Nicht-ASCII-Zeichen wie Emoji oder akzentuierte Buchstaben behandelt?

JavaScripts Encoder konvertieren Nicht-ASCII-Zeichen zuerst in UTF-8-Bytes und prozent-kodieren dann jedes Byte. So wird é zu %C3%A9 (zwei Bytes) und ein Emoji wie 😀 wird zu %F0%9F%98%80 (vier Bytes). Dekodierung kehrt den Prozess um. Dies ist das Standard-RFC-3986-Verhalten und funktioniert mit jedem modernen Server.

Warum scheitert die Dekodierung mit "URI malformed"?

decodeURIComponent wirft, wenn es eine ungültige Prozentsequenz sieht — ein einzelnes %, dem keine zwei Hex-Ziffern folgen (z.B. %ZZ oder nur %), oder UTF-8-Byte-Sequenzen, die nicht gültig sind (z.B. %C3 ohne gültiges Fortsetzungsbyte). Häufige Ursachen: ein wörtliches % in der Eingabe, das nie kodiert wurde, oder ein String, der bereits einmal dekodiert wurde und immer noch Prozentzeichen enthält.

Sollen Leerzeichen zu + oder %20 werden?

Beide werden in freier Wildbahn gesehen. %20 ist überall korrekt — in Pfaden, Query-Strings und Fragmenten. Die +-Abkürzung bedeutet nur "Leerzeichen" innerhalb des application/x-www-form-urlencoded-Formats, das von HTML-Formular-Übermittlungen verwendet wird. Dieses Tool verwendet %20, weil encodeURIComponent es tut. Wenn Sie speziell + brauchen, ersetzen Sie %20 nach dem Kodieren durch +.