Tun Doppelpunkte erfordern Codierung in URI-query-Parameter?

Habe ich bemerkt, dass Java - UriBuilder ist nicht die Codierung der : Zeichen eingeschlossen in meinem query-parameter-Werte (ISO-8601 formatierte strings).

Laut Wikipedia scheint es, Doppelpunkt codiert werden sollten.

Insbesondere die Codierung des Abfrage Strings verwendet die folgenden Regeln:

  • Buchstaben (A-Z und a-Z), zahlen (0-9) und die Zeichen '.','-','~' und '_' sind als Links-ist
  • RAUM codiert ist als " + "oder" %20[citation needed]
  • Alle anderen Zeichen kodiert als %FF hex Darstellung mit nicht-ASCII-Zeichen zunächst als UTF-8 kodiert (oder andere angegebene
    Codierung)

Also, was ist der deal? Sollten Doppelpunkte in den query-Parameter kodiert werden oder nicht?


Update:

Ich schaute auf die URI-Syntax-Spezifikation (RFC 3986) und es sieht aus wie Codierung Semikolon im query params ist wirklich nicht notwendig. Hier ein Auszug aus der ABNF für URI:

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query       = *( pchar /"/" /"?" )
pchar         = unreserved /pct-encoded /sub-delims /":" /"@"
unreserved    = ALPHA /DIGIT /"-" /"." /"_" /"~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" /"$" /"&" /"'" /"(" /")" /"*" /"+" /"," /";" /"=
  • Korrigieren Sie mich, wenn ich falsch bin, aber in deinem link ":" vorbehalten, die ein gen-delim und "jede [gen-delims] sind auch in der reservierten gesetzt sind 'reserviert' für die Verwendung als Unterkomponenten-Trennzeichen innerhalb der Komponente" (dh sub-delims)
  • Ich bin nur die Interpretation der ABNF, die es erlaubt ':' als Teil des query-strings. Dies passt auch mit dem Verhalten von Java ist UriBuilder sowie einige code, den ich getestet .NET. Dennoch ist es verwirrend, da Sie darauf hinweisen, die der text suggeriert, dass es sollte anders aufführen.
InformationsquelleAutor HolySamosa | 2012-12-04
Schreibe einen Kommentar