url为什么要编码?
因为URL中有些字符会引起歧义!
例如在URl中,参数是使用key=value的形式进行传参的,键值之间使用&进行间隔,比如:name=boss&age=20
但是,对于在value中包含了= 或者&的时候,那么势必会造成接受url的服务器解析错误,因此必须将产生歧义的&和=进行转义,也就是对其进行编码。
PS:url是采用ASCII编码,而非Unicode
URL编码的原则:使用安全的字符(没有特殊用途或者特殊意义的可打印的字符)去表达不安全的字符。
保留字符
":","/","#","[","]","@"
"!","$","&"," ' ","(",")","*","+"," , ",";","="
百分号编码(URL编码)
以一个百分号(%)和该字符的ASCII编码所对应的2位十六进制数字去替换这些有问题的字符。
例如:"/"会被替换成%2F ,对于%本身就会被替换成 %25
PS:对于保留字节的URL编码
! | * | " | ' | ( | ) | ; | : | @ | & |
%21 | %2A | %22 | %27 | %28 | %29 | %3B | %3A | %40 | %26 |
= | + | $ | , | / | ? | % | # | [ | ] |
%3D | %2B | %24 | %2C | %2F | %3F | %25 | %23 | %5B | %5D |
来源:oschina
链接:https://my.oschina.net/u/1037170/blog/174440