private static final String URL_UNRESERVED = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz" + "0123456789-_.~";
private static final char[] HEX = "0123456789ABCDEF".toCharArray();
private static String urlEncode(String str) {
StringBuffer buf = new StringBuffer();
byte[] bytes = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeUTF(str);
bytes = bos.toByteArray();
} catch (IOException e) {
// ignore
}
for (int i = 2; i < bytes.length; i++) {
byte b = bytes[i];
if (URL_UNRESERVED.indexOf(b) >= 0) {
buf.append((char) b);
} else {
buf.append('%').append(HEX[(b >> 4) & 0x0f]).append(
HEX[b & 0x0f]);
}
}
return buf.toString();
}
+ "abcdefghijklmnopqrstuvwxyz" + "0123456789-_.~";
private static final char[] HEX = "0123456789ABCDEF".toCharArray();
private static String urlEncode(String str) {
StringBuffer buf = new StringBuffer();
byte[] bytes = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeUTF(str);
bytes = bos.toByteArray();
} catch (IOException e) {
// ignore
}
for (int i = 2; i < bytes.length; i++) {
byte b = bytes[i];
if (URL_UNRESERVED.indexOf(b) >= 0) {
buf.append((char) b);
} else {
buf.append('%').append(HEX[(b >> 4) & 0x0f]).append(
HEX[b & 0x0f]);
}
}
return buf.toString();
}
本文介绍了一个简单的URL编码方法实现,通过定义保留字符集和十六进制字符数组,使用ByteArrayOutputStream和DataOutputStream完成字符串到字节的转换,并实现了对非保留字符进行百分号编码。
374

被折叠的 条评论
为什么被折叠?



