原因

  1. 当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符串的

  2. url对字符有限制,比如把一个邮箱放入url,就需要使用urlencode函数。

  3. url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。

哪些字符是需要转化

  1. ASCII的控制字符
    这些字符都是不可打印的,自然需要进行转化。

  2. 一些非ASCII字符

    这些字符自然是非法的字符范围。转化也是理所当然的了。

  3. 一些保留字符

    很明显最常见的就是“&”了,如果这个出现在url中,那你认为是url中的一个字符呢,还是特殊的参数分割符呢?

  4. 一些不安全的字符
    例如:空格。为了防止引起歧义,需要被转化为“+”。

转码规则

  • 按照每个字符对应的字符编码,不是符合我们范围的,统统的转化为 % 的形式,自然也是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;
        }
    }

}


hhhhh