ChrisB: urlencode: Leer- und Pluszeichen

Beitrag lesen

Hi,

Ich hab dazu was im Kontextwechsel-Artikel geschrieben. Beachte auch die Fußnote [2] hinter dem "eigentlich".

„Es gibt zwei Stellen in einer URL, die eigentlich unterschiedlich betrachtet werden müssen. Für den Querystring ist urlencode() vorgesehen und für Daten, die im Pfadteil eingefügt werden, gibt es rawurlencode(). Der Unterschied zwischen beiden Funktionen ist lediglich die Behandlung des Leerzeichens. rawurlencode() wandelt es zu %20, urlencode() hingegen in ein + (Plus).“

In RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax kann ich von dieser Unterscheidung, von der du in Bezug auf Path- und Query-Part von URLs sprichst, nichts (mehr) erkennen.

Abschnitt “3.4. Query” beschreibt den Aufbau des Query-Strings als

query       = *( pchar / "/" / "?" )

pchar wieder ist definiert als

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

und pct-encoded als

pct-encoded   = "%" HEXDIG HEXDIG

Abschnitt “2.1. Percent-Encoding” führt explizit dieses Beispiel an,

For example, "%20" is the percent-encoding for the binary octet "00100000" (ABNF: %x20), which in US-ASCII corresponds to the space character (SP).

Eine Unterscheidung zwischen der Kodierung eines Leerzeichens im Path- und im Query-Bestandteil eines URIs kann ich in RFC 3986 nicht entdecken.

Ich würde also sagen, dein „eigentlich“ im Artikel gilt eigentlich gar nicht mehr.
Wie das PHP-Manual zu urlencode auch schon sagt, sprechen höchstens noch “historical reasons” dafür, ein Leerzeichen als + zu kodieren. Dass es in freier Wildbahn noch eine Notwendigkeit dafür geben könnte, kann ich mir kaum vorstellen.

MfG ChrisB

--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?