url-encode url-decode percent-encoding developer-tools rfc3986

URL Encode Online Kostenlos: Der ultimative Leitfaden zur Prozentkodierung

URL-Kodierung und -Dekodierung kostenlos online. Erfahren Sie mehr über RFC 3986 Prozentkodierung, reservierte Zeichen und häufige Probleme in der URL-Struktur.

URL Encode Online Kostenlos: Der ultimative Leitfaden zur Prozentkodierung

Die URL-Kodierung, auch bekannt als Prozentkodierung (Percent-encoding), ist ein Mechanismus zur Kodierung von Informationen in einem Uniform Resource Identifier (URI). Obwohl es wie ein einfaches technisches Detail erscheinen mag, ist es ein grundlegender Bestandteil der Funktionsweise des Webs und stellt sicher, dass Daten korrekt zwischen Browsern und Servern übertragen werden.

In diesem Leitfaden erfahren Sie, warum die URL-Kodierung notwendig ist, wie sie funktioniert, und wir stellen Ihnen ein praktisches Online-Tool zur Verfügung.

Warum brauchen wir die URL-Kodierung?

URLs (Uniform Resource Locators) haben einen begrenzten Zeichensatz, der durch RFC 3986 definiert ist. Sie können nur bestimmte Zeichen enthalten. Wenn Sie Zeichen einfügen müssen, die nicht Teil dieses Satzes sind – wie Leerzeichen, Nicht-ASCII-Zeichen (z. B. aus dem Chinesischen oder Arabischen) oder Zeichen mit spezieller Bedeutung in einer URL (wie & oder =) – müssen Sie diese kodieren.

Reservierte vs. nicht reservierte Zeichen

Gemäß der Spezifikation werden Zeichen in zwei Kategorien unterteilt:

  1. Nicht reservierte Zeichen: Diese können in einer URL verwendet werden, ohne kodiert zu werden. Dazu gehören:

    • Groß- und Kleinstreibe (A-Z, a-z)
    • Dezimalziffern (0-9)
    • Bindestrich (-), Unterstrich (_), Punkt (.) und Tilde (~)
  2. Reservierte Zeichen: Diese haben eine spezielle Bedeutung in einer URL (z. B. werden sie als Trennzeichen wie /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, = verwendet). Wenn diese Zeichen Teil der gesendeten Daten sind (z. B. eine Suchanfrage) und nicht als Trennzeichen fungieren, müssen sie kodiert werden.

Wie Prozentkodierung funktioniert

Die Prozentkodierung ersetzt ein reserviertes Zeichen durch ein %, gefolgt von der zweistelligen hexadezimalen Darstellung seines ASCII-Werts.

Zum Beispiel:

  • Ein Leerzeichen wird zu %20 (ASCII-Wert 32, Hex 20).
  • Ein Ausrufezeichen (!) wird zu %21 (ASCII-Wert 33, Hex 21).
  • Ein Ampersand (&) wird zu %26 (ASCII-Wert 38, Hex 26).

Tabelle häufig kodierter Zeichen

Zeichen Kodierter Wert Beschreibung
Leerzeichen %20 oder + Abhängig vom Teil der URL
! %21 Ausrufezeichen
# %23 Raute (Fragment-Identifikator)
$ %24 Dollarzeichen
& %26 Ampersand (Abfrage-Trennzeichen)
' %27 Einfaches Anführungszeichen
( %28 Linke Klammer
) %29 Rechte Klammer
* %2A Sternchen
+ %2B Pluszeichen
, %2C Komma
/ %2F Schrägstrich (Pfad-Trennzeichen)
: %3A Doppelpunkt
; %3B Semikolon
= %3D Gleichheitszeichen (Abfrageparameter)
? %3F Fragezeichen (Abfragebeginn)
@ %40 At-Zeichen

Umgang mit Leerzeichen: %20 vs. +

Sie haben vielleicht bemerkt, dass Leerzeichen manchmal als %20 und manchmal als + kodiert werden.

  • %20 ist die Standardkodierung für ein Leerzeichen in jedem Teil der URI.
  • + wird speziell für Leerzeichen innerhalb des Query-Strings einer URL (nach dem ?) verwendet. Dies stammt vom veralteten Medientyp application/x-www-form-urlencoded, der von HTML-Formularen verwendet wird.

Moderne Tools und Bibliotheken handhaben dies normalerweise automatisch, aber es ist ein häufiger Punkt der Verwirrung für Entwickler.

URL-Kodierung in der Programmierung

Die meisten Programmiersprachen bieten integrierte Funktionen für die URL-Kodierung und -Dekodierung.

JavaScript

// Kodieren einer URI-Komponente
const query = "hallo welt & freunde";
const encoded = encodeURIComponent(query);
console.log(encoded); // Ausgabe: hallo%20welt%20%26%20freunde

// Dekodieren
const decoded = decodeURIComponent(encoded);
console.log(decoded); // Ausgabe: hallo welt & freunde

Python

import urllib.parse

query = "hallo welt & freunde"
encoded = urllib.parse.quote(query)
print(encoded) # Ausgabe: hallo%20welt%20%26%20freunde

decoded = urllib.parse.unquote(encoded)
print(decoded) # Ausgabe: hallo welt & freunde

PHP

<?php
$query = "hallo welt & freunde";
$encoded = urlencode($query);
echo $encoded; // Ausgabe: hallo+welt+%26+freunde

$decoded = urldecode($encoded);
echo $decoded; // Ausgabe: hallo welt & freunde
?>

Häufig gestellte Fragen (FAQ)

1. Sollte ich die gesamte URL oder nur Teile davon kodieren?

Normalerweise sollten Sie nur die Werte Ihrer Abfrageparameter oder bestimmte Segmente des Pfads kodieren. Die Kodierung der gesamten URL (einschließlich der Trennzeichen http://, : und /) macht sie als URI ungültig. Verwenden Sie encodeURIComponent() für Werte und encodeURI() für die gesamte URI (Trennzzeichen werden übersprungen).

2. Ist URL-Kodierung dasselbe wie Base64-Kodierung?

Nein. Die URL-Kodierung (Prozentkodierung) wird verwendet, um Zeichen in einer URL zu maskieren. Base64 wird verwendet, um Binärdaten als Zeichenfolge aus 64 ASCII-Zeichen darzustellen. Sie dienen völlig unterschiedlichen Zwecken.

3. Warum erhalte ich eine "Malformed URI"-Fehlermeldung?

Dies geschieht normalerweise während der Dekodierung, wenn die Zeichenfolge ein %-Zeichen enthält, auf das nicht zwei gültige hexadezimale Ziffern folgen. Zum Beispiel würde index.php?name=100% einen Fehler verursachen, da das % am Ende kein gültiger Start einer kodierten Sequenz ist.

4. Unterstützt die URL-Kodierung Unicode?

Ja. Die moderne URL-Kodierung (auf UTF-8-Basis) verarbeitet Unicode, indem das Zeichen zuerst in seine UTF-8-Bytesequenz umgewandelt wird und dann jedes Byte prozentkodiert wird. Zum Beispiel wird das Zeichen (UTF-8: E6 B1 89) zu %E6%B1%89.

Fazit

Die URL-Kodierung ist ein einfaches, aber wichtiges Werkzeug zur Gewährleistung der Integrität von Webdaten. Egal, ob Sie eine Webanwendung erstellen, API-Aufrufe debuggen oder einfach nur neugierig sind, wie das Web funktioniert – das Verständnis der Prozentkodierung ist unerlässlich.

Müssen Sie eine Zeichenfolge schnell kodieren oder dekodieren? Verwenden Sie unser URL-Kodierungs-/Dekodierungs-Tool, um es in Sekundenschnelle zu erledigen!