URL编码和ASCII编码有没有关系?

URL编码有编码表吗?它和ASCII编码有没有联系?

阅读 2.8k
1 个回答

URL 编码的规定由 RFC-3986 给出。

要说跟 ASCII 有关系也有关系,要说没关系也没关系。

URL 编码规定只能包含英文字母(a-zA-Z)、数字(0-9)、和几个保留字符,这些字符的都包含在 ASCII 范围内;但不是所有 ASCII 字符都被 URL 编码允许,这个能理解不?

另外 URL 里每个“段”允许的保留字符是不一样的:

  • ?/ 在 Query 部分是不用被编码的;
  • :@-.\_~!$&’()\*+,;= 这些字符在 Path 部分是不用被编码的;
  • /?:@-.\_~!$&’()\*+,;= 在 Fragment 部分是不用被编码的。

以上这些保留字符只是说允许不编码,但不是说不能编码。比如 ? 在 Query 里如果是充当一个键值对的键或值的时候,还是得编码。


P.S. 最新的 RFC 规定里已经说 URL 在 HTTP 请求报文里需要是 UTF-8 编码的,所以看上去是 ASCII 里的部分字符,实际上是 UTF-8 中的部分字符。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进