因此,只有字母数字、特殊字符“$-_.+!*'()”和用于其保留目的的保留字符可以在 URL 中未编码地使用。
经过一番搜索,我总结出应该编码的字符有以下三种:
- 不安全字符:'#'、''、'"'、'%'、'<'、'>'、'{'、'}'、"|"、''、'^'、'~'、' [', ']', '`'。
- 保留字符:';'、'/'、'?'、':'、'@'、'='、'&'。
- 特殊字符:"$-_.+!*'(),"
我知道为什么以及何时应该对不安全字符和保留字符进行编码。RFC1738 规定可以使用未编码的特殊字符,但我发现urllib2.quote
也可以将这些特殊字符编码为"%24-_.%2B%21%2A%27%28%29%2C%7E"
. 所以,我有点困惑,如果特殊字符可以在 URL 中未编码使用,为什么要编码特殊字符,以及为什么它们是特殊的。