【技术累积】【点】【java】【18】URLEncode

基础概念

由于以URL的形式传递信息给服务器时,不允许URL中出现一些特殊字符和空格的,所以需要对URL进行编码处理。

原理是:

  • 将要转码的字符转变为16进制;
  • 从右到左,每两位前面加%

哪些字符是需要转化的呢?

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

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

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

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

举例

@Test
    public void testUrlEncode() throws UnsupportedEncodingException {
        String encode = URLEncoder.encode("你好","GBK");
        String encodeUtf8 = URLEncoder.encode("你好","UTF-8");

        String decode = URLDecoder.decode(encodeUtf8,"GBK");
        String decodeUtf8 = URLDecoder.decode(encode,"UTF-8");
        LOGGER.info("encode={}",encode);
    }

其中,编解码可以看做是一个字节是一位,例如几种常见编码所述。

参考文章

原文地址:https://www.cnblogs.com/andy1202go/p/9754746.html