Java がクエリ パラメータ値 (ISO 8601 形式の文字列) に含まれる文字UriBuilder
をエンコードしていないことに気付きました。:
ウィキペディアによると、コロンをエンコードする必要があるようです。
特に、クエリ文字列のエンコードでは、次の規則が使用されます。
- 文字 (A ~ Z および a ~ z)、数字 (0 ~ 9)、および文字「.」、「-」、「~」、および「_」はそのまま残されます。
- SPACE は '+' または %20 としてエンコードされます[要出典]
- 他のすべての文字は、最初に UTF-8 (または他の指定されたエンコーディング) としてエンコードされた非 ASCII 文字を含む %FF 16 進数表現としてエンコードされます。
それで、取引は何ですか?クエリ パラメータのコロンをエンコードする必要がありますか?
アップデート:
URI 構文仕様 ( RFC 3986 ) を調べたところ、クエリ パラメータでコロンをエンコードする必要はないようです。以下は、URI の ABNF からの抜粋です。
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=