publicstaticfinal URLEncoder DEFAULT = new URLEncoder(); publicstaticfinal URLEncoder QUERY = new URLEncoder();
static { /* *EncoderforURIpaths,sofromthespec: * *pchar=unreserved/pct-encoded/sub-delims/":"/"@" * *unreserved=ALPHA/DIGIT/"-"/"."/"_"/"~" * *sub-delims="!"/"$"/"&"/"'"/"("/")" */"*"/"+"/","/";"/"="
*/ // ALPHA and DIGIT are always treated as safe characters // Add the remaining unreserved characters DEFAULT.addSafeCharacter('-'); DEFAULT.addSafeCharacter('.'); DEFAULT.addSafeCharacter('_'); DEFAULT.addSafeCharacter('~'); // Add the sub-delims DEFAULT.addSafeCharacter('!'); DEFAULT.addSafeCharacter('$'); DEFAULT.addSafeCharacter('&'); DEFAULT.addSafeCharacter('\''); DEFAULT.addSafeCharacter('('); DEFAULT.addSafeCharacter(')'); DEFAULT.addSafeCharacter('*'); DEFAULT.addSafeCharacter('+'); DEFAULT.addSafeCharacter(','); DEFAULT.addSafeCharacter(';'); DEFAULT.addSafeCharacter('='); // Add the remaining literals DEFAULT.addSafeCharacter(':'); DEFAULT.addSafeCharacter('@'); // Add '/' so it isn't encoded when we encode a path DEFAULT.addSafeCharacter('/');
/* *Encoderforquerystrings *https://www.w3.org/TR/html5/forms.html#application/x-www-form-urlencoded-encoding-algorithm *0x20''->'+' *0x2A,0x2D,0x2E,0x30to0x39,0x41to0x5A,0x5F,0x61to0x7Aas-is *'*','-','.','0'to'9','A'to'Z','_','a'to'z' *Also'='and'&'arenotencoded *Everythingelse%nnencoded
*/ // Special encoding for space
QUERY.setEncodeSpaceAsPlus(true); // Alpha and digit are safe by default // Add the other permitted characters
QUERY.addSafeCharacter('*');
QUERY.addSafeCharacter('-');
QUERY.addSafeCharacter('.');
QUERY.addSafeCharacter('_');
QUERY.addSafeCharacter('=');
QUERY.addSafeCharacter('&');
}
//Array containing the safe characters set. privatefinal BitSet safeCharacters;
privateboolean encodeSpaceAsPlus = false;
public URLEncoder() { this(new BitSet(256));
for (char i = 'a'; i <= 'z'; i++) {
addSafeCharacter(i);
} for (char i = 'A'; i <= 'Z'; i++) {
addSafeCharacter(i);
} for (char i = '0'; i <= '9'; i++) {
addSafeCharacter(i);
}
}
int maxBytesPerChar = 10;
StringBuilder rewrittenPath = new StringBuilder(path.length());
ByteArrayOutputStream buf = new ByteArrayOutputStream(maxBytesPerChar);
OutputStreamWriter writer = new OutputStreamWriter(buf, charset);
for (int i = 0; i < path.length(); i++) { int c = path.charAt(i); if (safeCharacters.get(c)) {
rewrittenPath.append((char)c);
} elseif (encodeSpaceAsPlus && c == ' ') {
rewrittenPath.append('+');
} else { // convert to external encoding before hex conversion try {
writer.write((char)c);
writer.flush();
} catch(IOException e) {
buf.reset(); continue;
} byte[] ba = buf.toByteArray(); for (byte toEncode : ba) { // Converting each byte in the buffer
rewrittenPath.append('%'); int low = toEncode & 0x0f; int high = (toEncode & 0xf0) >> 4;
rewrittenPath.append(hexadecimal[high]);
rewrittenPath.append(hexadecimal[low]);
}
buf.reset();
}
} return rewrittenPath.toString();
}
@Override public Object clone() {
URLEncoder result = new URLEncoder((BitSet) safeCharacters.clone());
result.setEncodeSpaceAsPlus(encodeSpaceAsPlus); return result;
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-10-03)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.