前端

梗概:

1. 基础字符:

URL 的各个组成部分,不转义就能使用以下这些字符。

  • 26个英语字母(包括大写和小写)
  • 10个阿拉伯数字
  • 连词号(-
  • 句点(.
  • 下划线(_

2. 保留字符:

在URL的特定位置, 有18个字符不转义就能使用, 但会被被作为特殊功能 如,查询参数的开头是问号(?

3. 需转义字符:

字符经过转移后, 在URL的任意位置都能够使用 可以使用工具对URL进行批量转义

4. 其他字符:

既不属于合法字符、也不属于保留字符的其他字符(比如汉字),理论上不需要手动转义,可以直接写在 URL 里面,比如www.example.com/中国.html,浏览器会自动将它们转义,发给服务器。转义方法是使用这些字符的十六进制 UTF-8 编码,每两位算作一组,然后每组头部添加百分号(%)。

转义字符对应表:

URL 字符转义的方法是,在这些字符的十六进制 ASCII 码前面加上百分号(%)。下面是这18个字符及其转义形式。

  • 实际中使用[use::urlencode]进行转义编码4

1. 保留字符的转义:

  • !:%21
  • #:%23
  • $:%24
  • &:%26
  • ':%27
  • (:%28
  • ):%29
  • *:%2A
  • +:%2B
  • ,:%2C
  • /:%2F
  • ::%3A
  • ;:%3B
  • =:%3D
  • ?:%3F
  • @:%40
  • [:%5B
  • ]:%5D

2. 需转义字符:

  • 空格: %20

1. 实例:

1. 保留字符的转义:

有一个网页的 URL 是foo?bar.html,即文件里面包含一个问号,那么需要写成foo%3Fbar.html

2. 其他字符的转义:

举例来说,汉字的 UTF-8 十六进制编码是e4b8ad,每两个字符一组,URL 转义后就为%e4%b8%ad。也就是说,URL 里面凡是有汉字的地方,都要写成%e4%b8%ad。因此,访问www.example.com/中国.html这个网址,需要写成下面的样子。

www.example.com/%e4%b8%ad%e5%9b%bd.html

上面代码中,的转义形式是%e4%b8%ad%e5%9b%bd