- /**
- * java实现javascript中的escape和unescape函数
- * 多用于URL编码与解码
- */
- public class EscapeUnescape {
- public static String escape(String src) {
- int i;
- char j;
- StringBuffer tmp = new StringBuffer();
- tmp.ensureCapacity(src.length() * 6);
- for (i = 0; i < src.length(); i++) {
- j = src.charAt(i);
- if (Character.isDigit(j) || Character.isLowerCase(j)
- || Character.isUpperCase(j))
- tmp.append(j);
- else if (j < 256) {
- tmp.append("%");
- if (j < 16)
- tmp.append("0");
- tmp.append(Integer.toString(j, 16));
- } else {
- tmp.append("%u");
- tmp.append(Integer.toString(j, 16));
- }
- }
- return tmp.toString();
- }
- public static String unescape(String src) {
- StringBuffer tmp = new StringBuffer();
- tmp.ensureCapacity(src.length());
- int lastPos = 0, pos = 0;
- char ch;
- while (lastPos < src.length()) {
- pos = src.indexOf("%", lastPos);
- if (pos == lastPos) {
- if (src.charAt(pos + 1) == 'u') {
- ch = (char) Integer.parseInt(
- src.substring(pos + 2, pos + 6), 16);
- tmp.append(ch);
- lastPos = pos + 6;
- } else {
- ch = (char) Integer.parseInt(
- src.substring(pos + 1, pos + 3), 16);
- tmp.append(ch);
- lastPos = pos + 3;
- }
- } else {
- if (pos == -1) {
- tmp.append(src.substring(lastPos));
- lastPos = src.length();
- } else {
- tmp.append(src.substring(lastPos, pos));
- lastPos = pos;
- }
- }
- }
- return tmp.toString();
- }
- public static void main(String[] args) {
- String tmp = "测试!";
- System.out.println("编码: " + escape(tmp));
- System.out.println("解码: " + unescape(tmp));
- }
- }
来源: http://www.phpxs.com/code/1002402/