美文网首页
URL encode和decode的原理解析

URL encode和decode的原理解析

作者: 只有青山如洛 | 来源:发表于2022-06-21 18:50 被阅读0次

1. URLEncoder.encode()

surrogate pair: UTF-16中用于扩展字符而使用的编码方式,是一种采用四个字节(两个UTF-16编码)来表示一个字符。
encode的原理:

  1. 首先建立一个dontNeedEncoding集合来保存不需要进行编码的字符,包括a-z, A-Z, 0-9等。
  2. 对待编码字符串进行循环遍历,对每一位字符c进行验证:
    1)如果c在dontNeedEncoding中,即c不需要编码,则直接将其append到结果字符串;
    2)如果c不在dontNeedEncoding中,证明c需要被编码,校验当前位与下一位符合hex编码的高低代理位规则,并将他们写入待处理CharArrayWriter中。
  3. 接下来对charArrayWriter中的特殊字符进行处理:
    根据编码方式将其转为byte数组,并进行遍历:对待每一位特殊字符,在其前面加上%,并将其转为16进制字符串,并将转义后的结果append到结果字符串。

2. decode

decode的原理:

  1. 对待解码字符串进行遍历,对待每一个字符c进行验证:
    1)如果为‘+’, 则直接在结果append空格字符' '
    2) 如果为'%',则代表其应该是经过编码的特殊字符,则当前位i-->i+2位应该是一个特殊字符的编码结果,将其转回为byte字符;如果遇到i到i+2位之间不符合hex字符规则的情况,则抛出异常;如果再处理后发现字符串仍包含未处理%,则证明该字符串不符合编码规则,抛出异常。

相关文章

网友评论

      本文标题:URL encode和decode的原理解析

      本文链接:https://www.haomeiwen.com/subject/apmwurtx.html