【技术累积】【点】【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);
    }

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

参考文章

posted @ 2018-10-08 15:38  韧还  阅读(436)  评论(0编辑  收藏  举报