我注意到,Java的UriBuilder
不编码:
包含在我的查询参数值(ISO 8601格式的字符串)字符。
根据维基百科,它似乎应该结肠进行编码。
尤其是,编码的查询字符串使用以下规则:
- 字母(AZ和az),数字(0-9)和字符, ' '' - ', '〜' 和 '_' 被保持原样
- SPACE被编码为“+”或%20 [编辑]
- 所有其他字符被编码为FF%十六进制表示与第一编码为UTF-8(或其他指定的编码)的任何非ASCII字符
那么,这是怎么回事? 应查询参数冒号编码或不是?
更新:
我抬起头的URI语法规范( RFC 3986 ),它看起来像在查询编码冒号PARAMS实在是没有必要的。 下面是来自ABNF的URI的摘录:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=