原因
-
当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符串的
-
url对字符有限制,比如把一个邮箱放入url,就需要使用urlencode函数。
-
url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
哪些字符是需要转化
-
ASCII的控制字符
这些字符都是不可打印的,自然需要进行转化。 -
一些非ASCII字符
这些字符自然是非法的字符范围。转化也是理所当然的了。
-
一些保留字符
很明显最常见的就是“&”了,如果这个出现在url中,那你认为是url中的一个字符呢,还是特殊的参数分割符呢?
-
一些不安全的字符
例如:空格。为了防止引起歧义,需要被转化为“+”。
转码规则
- 按照每个字符对应的字符编码,不是符合我们范围的,统统的转化为 % 的形式,自然也是16进制的形式。
实现
- URLCodeUtil.java
import java.io.UnsupportedEncodingException;
public class URLCodeUtil {
//UrlEncode转码
public static String encode(String lastURL) {
try {
return java.net.URLEncoder.encode(lastURL, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
//UrlEncode解码
public static String decode(String lastURL) {
try {
return java.net.URLDecoder.decode(lastURL, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
}
Comments | 0 条评论