工作中碰到个问题,就是固定的URL 却要编码,后来公司一牛人,想了一个解决方案,就是利用javascript的url编码,发现除去所有的ascii码值+一些特殊的字符意外,其他都可以编码,在apache的comment包中,找到了判断是否是ascii码的方法。利用起来!!
希望可以帮到需要的人,都是程序猿,大家都不易啊!!!
搞起,下面上代码
public class ZSEncode {/**
* 判断是否是ascii 发现127 128 无用,果断去掉
* @param ch
* @return
*/
public static boolean isAscii(char ch) {
return ch <= 126;
}
/**
* 替换ascii中的一些特殊字符
* @param url
* @return
*/
public static String encodeURI(String url) {
if (url == null) {
return "";
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < url.length(); i++) {
char ch = url.charAt(i);
if (isAscii(ch)) {
switch (ch) {
case '"':
sb.append("%22");
break;
case '%':
sb.append("%25");
break;
case '<':
sb.append("%3C");
break;
case '>':
sb.append("%3E");
break;
case '[':
sb.append("%5B");
break;
case ']':
sb.append("%5D");
break;
case '^':
sb.append("%5E");
break;
case '`':
sb.append("%60");
break;
case '{':
sb.append("%7B");
break;
case '|':
sb.append("%7C");
break;
case '}':
sb.append("%7D");
break;
case ' ':
sb.append("%20");
break;
default:
sb.append(ch);
break;
}
} else {
try {
sb.append(URLEncoder.encode(Character.toString(ch), "UTF-8"));
} catch (Exception e) {
sb.append(ch);
}
}
}
return sb.toString();
}
}
转载请标明出处!!