URL-Encoder: Sonderzeichen in URLs kostenlos online escapen
Kostenfreies URL-Zeichenumwandlungstool zum sofortigen Escapen von Sonderzeichen. Wandeln Sie Leerzeichen, Unicode und Symbole in Prozent-kodiertes Format um. Perfekt für APIs, Webformulare und internationale URLs. Jetzt ausprobieren!
URL-Zeichenfolge-Escaper
Dokumentation
URL-Kodierung: Was sie ist und wie sie funktioniert
URL-Kodierung, auch Prozentkodierung genannt, ist eine Methode, Zeichen in einer Webadresse ausschließlich mit einer kleinen Gruppe sicherer ASCII-Zeichen darzustellen. Dabei wird ein unsicheres Zeichen durch ein %-Zeichen gefolgt von zwei Hexadezimalziffern ersetzt. Dieses Tool zur Maskierung von URL-Zeichenfolgen kodiert Text genauso wie die in JavaScript integrierte Funktion encodeURIComponent.
Warum URLs kodiert werden müssen
Eine URL darf nur eine begrenzte Gruppe von Zeichen enthalten: Buchstaben, Ziffern und einige Satzzeichen. Leerzeichen, Buchstaben mit Akzenten, Zeichen aus nicht-lateinischen Alphabeten sowie Symbole wie & oder = können eine URL beschädigen oder ihre Bedeutung verändern, wenn sie unkodiert darin vorkommen. Ein Leerzeichen in einem Link kann beispielsweise dazu führen, dass ein Browser oder Server die URL als zwei getrennte Teile liest. Die Prozentkodierung ersetzt diese Zeichen durch einen Code, den jeder Browser und jeder Server auf dieselbe Weise lesen kann.
Zeichen, die dieses Tool unverändert lässt
Dieses Tool verändert die folgenden Zeichen nicht. Sie werden direkt übernommen:
- Groß- und Kleinbuchstaben:
A–Z,a–z - Ziffern:
0–9 - Die Satzzeichen
-._~!*'()
Jedes andere Zeichen wird prozentkodiert, darunter:
- Das Leerzeichen sowie Satzzeichen wie
:/?#[]@$&+,;= - Buchstaben mit Akzenten und alle anderen Nicht-ASCII- oder Unicode-Zeichen
- Ein wörtliches
%-Zeichen selbst, das immer zu%25wird, auch wenn es bereits Teil einer Prozentkodierung war
In einigen allgemeinen Leitfäden zur URL-Syntax werden ! * ' ( und ) zusammen mit anderen Satzzeichen als Zeichen aufgeführt, die in bestimmten Kontexten „möglicherweise kodiert werden müssen“. Dieses spezielle Tool kodiert sie nicht, da es den Regeln von encodeURIComponent folgt, nach denen sie als sicher gelten.
So wird eine prozentkodierte Zeichenfolge berechnet (Formel)
Das Tool prüft jedes Zeichen der Eingabe einzeln und wendet die folgende Regel an:
- Wenn das Zeichen zu den oben aufgeführten unveränderten Zeichen gehört, wird es unverändert übernommen.
- Andernfalls wird das Zeichen in seine UTF-8-Bytefolge umgewandelt. Buchstaben mit lateinischen Akzenten sowie griechische, kyrillische und arabische Buchstaben verwenden zwei Bytes. Chinesische, japanische und koreanische Zeichen verwenden drei. Emojis verwenden vier.
- Jedes Byte wird als zweistellige Hexadezimalzahl geschrieben.
- Vor jedes Hexadezimalpaar wird ein
%gesetzt. - Die Ergebnisse werden in ihrer ursprünglichen Reihenfolge zu einer kodierten Zeichenfolge verbunden.
Beispiel
Eingabe: Jürgen & Björk
Schrittweise nach Zeichen:
| Zeichen | Ergebnis |
|---|---|
J | J (unverändert) |
ü | %C3%BC (UTF-8-Bytes 0xC3, 0xBC) |
rgen | rgen (unverändert) |
(Leerzeichen) | %20 |
& | %26 |
(Leerzeichen) | %20 |
Bj | Bj (unverändert) |
ö | %C3%B6 (UTF-8-Bytes 0xC3, 0xB6) |
rk | rk (unverändert) |
Ausgabe: J%C3%BCrgen%20%26%20Bj%C3%B6rk
Ein zweites Beispiel zeigt, wie die unveränderte Zeichengruppe funktioniert. Beim Kodieren der Zeichenfolge -_.!~*'() entsteht -_.!~*'(), also genau derselbe Text, weil jedes Zeichen zur Gruppe der nicht reservierten Zeichen gehört. Beim Kodieren der Zeichenfolge 100% entsteht 100%25, weil das %-Zeichen selbst kein sicheres Zeichen ist.
Eine prozentkodierte Zeichenfolge dekodieren
Beim Dekodieren wird der Vorgang umgekehrt: Jede %XX-Sequenz wird als hexadezimales Byte gelesen, die Bytes werden wieder zu ihrem ursprünglichen UTF-8-Zeichen zusammengefasst, und das Zeichen ersetzt die Sequenz. Beispielsweise wird %C3%BC wieder zu ü dekodiert und %20 zu einem Leerzeichen. Dieses Tool kodiert nur; für die Umkehrung wird ein separates Dekodierungstool benötigt.
Häufige Anwendungsfälle
Prozentkodierung wird überall dort verwendet, wo von einer Person eingegebener Text und nicht von einem Programmierer geschriebener Text Bestandteil einer URL werden soll:
- Suchfelder, die den Suchbegriff in die Adressleiste übernehmen, etwa
?q=shoes%20%26%20bags - Abfrageparameter mit Namen, Adressen oder anderen Benutzerdaten
- Links zu Seiten mit Titeln in Sprachen, die Buchstaben mit Akzenten oder nicht-lateinische Schriften verwenden
- API-Anfragen, die Token oder Kennungen als Teil der URL übergeben
Codebeispiele
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5Pythons quote lässt Buchstaben, Ziffern und - . _ ~ immer unverändert. Die fünf zusätzlichen Zeichen ! * ' ( ) müssen in safe aufgeführt werden, damit das Ergebnis diesem Tool entspricht. Ohne diese Zeichen gibt quote stattdessen %21 %2A %27 %28 %29 zurück.
Geschichte
Die Idee, unsichere Zeichen in einer URL zu kodieren, geht auf RFC 1738 aus dem Jahr 1994 zurück, eines der ersten Dokumente zur Definition des URL-Formats. RFC 3986, veröffentlicht im Jahr 2005, aktualisierte die Regeln und definierte formal die Gruppe der „nicht reservierten“ Zeichen, die nie kodiert werden müssen. encodeURIComponent, die JavaScript-Funktion, auf der dieses Tool basiert, verwendet eine etwas größere Gruppe nicht reservierter Zeichen als RFC 3986: Auch ! * ' ( und ) bleiben unkodiert. Damit folgt die Funktion einer früheren Version der URI-Spezifikation.
Häufig gestellte Fragen
Was ist der Unterschied zwischen URL-Kodierung und URL-Escaping?
Beide Begriffe bezeichnen dasselbe. Gemeint ist jeweils die Prozentkodierung, bei der ein Zeichen durch % gefolgt von zwei Hexadezimalziffern ersetzt wird.
Warum bleiben !, *, ', ( und ) in diesem Tool unverändert?
Dieses Tool verwendet encodeURIComponent, das diese fünf Zeichen als sicher behandelt und genau so übernimmt, wie sie eingegeben wurden. Andere Kodierungsfunktionen und einige Server erwarten möglicherweise trotzdem, dass diese Zeichen kodiert werden. Wenn dadurch ein Problem entsteht, sollte das Zielsystem geprüft werden.
Was ist bei einem Leerzeichen der Unterschied zwischen %20 und +?
Beide stehen für ein Leerzeichen. %20 ist die allgemeine Prozentkodierung für ein Leerzeichen. Das +-Zeichen ist ein Sonderfall, der nur in Daten im Format application/x-www-form-urlencoded verwendet wird, also im Format von HTML-Formularübermittlungen, nicht von diesem Tool.
Dekodiert dieses Tool bereits kodierten Text?
Nein. Es kodiert ausschließlich. Wenn die Eingabe bereits ein %-Zeichen enthält, wird dieses als wörtliches Zeichen behandelt und in der Ausgabe zu %25, anstatt unverändert zu bleiben.
Wie werden nicht-lateinische Zeichen, etwa chinesischer oder arabischer Text, behandelt?
Jedes Zeichen wird zunächst in seine UTF-8-Bytefolge umgewandelt. Anschließend wird jedes Byte prozentkodiert. Ein chinesisches Zeichen verwendet drei Bytes und erzeugt daher drei %XX-Gruppen. Ein arabischer Buchstabe verwendet zwei Bytes und erzeugt daher zwei.
Wann verweigert das Tool die Kodierung von Text?
Nur wenn der Text eine Hälfte eines Surrogatpaars enthält. Ein Surrogatpaar ist der aus zwei Teilen bestehende Code, mit dem ein Zeichen oberhalb von U+FFFF gespeichert wird, etwa ein Emoji. Eine einzelne Hälfte hat keine gültige UTF-8-Darstellung. Daher zeigt das Tool einen Fehler statt eines Ergebnisses an. Durch normales Tippen kann dies nicht entstehen. Ein solches Zeichen stammt normalerweise aus einer abgeschnittenen Kopie oder einem beschädigten Link.
Sollte eine vollständige URL oder nur ein Teil davon kodiert werden?
Es sollten nur die Teile kodiert werden, die Benutzerdaten enthalten, etwa Abfragewerte oder Pfadsegmente. Die Teile, aus denen die Struktur der URL besteht, etwa https:// und der Domainname, sollten nicht kodiert werden. Würde eine vollständige URL mit einem Kodierer für Komponenten kodiert, würden auch die Zeichen :, / und ? in Prozentcodes umgewandelt. Dadurch würde die Adresse beschädigt.