@@ -30,6 +30,7 @@ public final class UTF8UrlEncoder {
3030 public final static BitSet RFC3986_UNRESERVED_CHARS = new BitSet (256 );
3131 public final static BitSet RFC3986_RESERVED_CHARS = new BitSet (256 );
3232 public final static BitSet RFC3986_SUBDELIM_CHARS = new BitSet (256 );
33+ public final static BitSet RFC3986_PCHARS = new BitSet (256 );
3334 public final static BitSet BUILT_PATH_UNTOUCHED_CHARS = new BitSet (256 );
3435 public final static BitSet BUILT_QUERY_UNTOUCHED_CHARS = new BitSet (256 );
3536 // http://www.w3.org/TR/html5/forms.html#application/x-www-form-urlencoded-encoding-algorithm
@@ -88,17 +89,20 @@ public final class UTF8UrlEncoder {
8889 RFC3986_RESERVED_CHARS .set ('#' );
8990 RFC3986_RESERVED_CHARS .set ('[' );
9091 RFC3986_RESERVED_CHARS .set (']' );
92+
93+ RFC3986_PCHARS .or (RFC3986_UNRESERVED_CHARS );
94+ RFC3986_PCHARS .or (RFC3986_SUBDELIM_CHARS );
95+ RFC3986_PCHARS .set (':' );
96+ RFC3986_PCHARS .set ('@' );
9197
92- BUILT_PATH_UNTOUCHED_CHARS .or (RFC3986_UNRESERVED_CHARS );
98+ BUILT_PATH_UNTOUCHED_CHARS .or (RFC3986_PCHARS );
9399 BUILT_PATH_UNTOUCHED_CHARS .set ('%' );
94- BUILT_PATH_UNTOUCHED_CHARS .or (RFC3986_SUBDELIM_CHARS );
95- BUILT_PATH_UNTOUCHED_CHARS .set (':' );
96- BUILT_PATH_UNTOUCHED_CHARS .set ('@' );
97100 BUILT_PATH_UNTOUCHED_CHARS .set ('/' );
98101
99- BUILT_QUERY_UNTOUCHED_CHARS .or (RFC3986_UNRESERVED_CHARS );
100- BUILT_QUERY_UNTOUCHED_CHARS .or (RFC3986_RESERVED_CHARS );
102+ BUILT_QUERY_UNTOUCHED_CHARS .or (RFC3986_PCHARS );
101103 BUILT_QUERY_UNTOUCHED_CHARS .set ('%' );
104+ BUILT_QUERY_UNTOUCHED_CHARS .set ('/' );
105+ BUILT_QUERY_UNTOUCHED_CHARS .set ('?' );
102106 }
103107
104108 private static final char [] HEX = "0123456789ABCDEF" .toCharArray ();
0 commit comments