Die Prozentkodierung ersetzt Zeichen, die in einer URL eine eigene Bedeutung haben oder dort nicht vorkommen dürfen, durch ein Prozentzeichen und den Hexadezimalwert ihrer Bytes. Aus einem Leerzeichen wird %20, aus einem ö wird %C3%B6.
Entscheidend ist, was kodiert wird. Ein einzelner Parameterwert braucht die vollständige Kodierung — dort muss auch das Und-Zeichen weichen, sonst zerlegt der Server die Adresse an der falschen Stelle.
Ganze Adresse oder einzelner Wert
Bei einer ganzen Adresse müssen Doppelpunkt, Schrägstrich, Fragezeichen und Und-Zeichen stehen bleiben — sie sind die Struktur. Kodiert werden nur Leerzeichen, Umlaute und alles andere, was nicht in eine URL gehört.
Bei einem einzelnen Wert ist es umgekehrt: Dort ist ein Und-Zeichen kein Trenner, sondern Inhalt, und muss deshalb zu %26 werden. Genau diese Verwechslung ist die häufigste Ursache für Parameter, die auf halber Strecke abgeschnitten ankommen.
Der Sonderfall Leerzeichen
In einer URL wird ein Leerzeichen als %20 kodiert. In Formulardaten, die als application/x-www-form-urlencoded verschickt werden, steht dafür ein Pluszeichen — ein historisches Erbe aus frühen HTML-Formularen.
Beide Formen begegnen einem im Alltag, und ein Server, der die falsche erwartet, liefert entweder ein Plus mitten im Text oder ein fehlendes Leerzeichen. Der Rechner zeigt deshalb beide Varianten an.