// Encodes the given string as required for
// use in a URL query string or POST data.
StringBuffer result = new StringBuffer(src.length());
int count = src.length();
for (int i = 0; i < count; i++) {
char c = src.charAt(i);
if (noEncode.indexOf(c) != -1) {
// This is a character that does not
// need to be encoded
result.append(c);
continue;
}
// Space is converted to '+'
if (c == ' ") {
result.append('+");
continue;
}
// The remaining characters must be converted to
// '%XY' where 'XY' is the hexadecimal value of
// the character itself.
result.append('%");
result.append(hexDigits[(c >> 4) & 0xF]);
result.append(hexDigits[c & 0xF]);
}
return result.toString();