correct percent encoding for '%' char

pull/1/head
reger 10 years ago
parent 66d0b5046a
commit 839b962c20

@ -601,9 +601,10 @@ public class MultiProtocolURL implements Serializable, Comparable<MultiProtocolU
sbuf.append("%20"); sbuf.append("%20");
} else if (ch == '%') { } else if (ch == '%') {
if (i < len - 2 && s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9' && s.charAt(i + 2) >= '0' && s.charAt(i + 2) <= '9') { if (i < len - 2 && s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '9' && s.charAt(i + 2) >= '0' && s.charAt(i + 2) <= '9') {
// TODO: actually 0..9 A..F a..f is allowed (or any of hex[] sequence)
sbuf.append((char)ch); // lets consider this is used for encoding, leave it that way sbuf.append((char)ch); // lets consider this is used for encoding, leave it that way
} else { } else {
sbuf.append("%23"); // RFC 1738 2.2 unsafe char shall be encoded sbuf.append("%25"); // '%' RFC 1738 2.2 unsafe char shall be encoded
} }
} else if (ch == '&') { } else if (ch == '&') {
if (i < len - 6 && "amp;".equals(s.substring(i + 1, i + 5).toLowerCase())) { if (i < len - 6 && "amp;".equals(s.substring(i + 1, i + 5).toLowerCase())) {

Loading…
Cancel
Save