URL 编码是将 URL 中不可打印的字符或具有特殊含义的字符转换为明确且被 Web 浏览器和服务器普遍接受的表示形式的做法。 这些字符包括 -

  • ASCII 控制字符 - 通常用于输出控制的不可打印字符。 字符范围为 00-1F 十六进制(十进制 0-31)和 7F(十进制 127)。 下面给出了完整的编码表。
  • 非 ASCII 控制字符 - 这些字符超出 128 个字符的 ASCII 字符集。 此范围是 ISO-Latin 字符集的一部分,包括 ISO-Latin 集 80-FF 十六进制(十进制 128-255)的整个“上半部分”。 下面给出了完整的编码表。
  • 保留字符- 这些是特殊字符,例如美元符号、与号、加号、普通符号、正斜杠、冒号、分号、等号、问号和“at”符号。 所有这些在 URL 中都可以有不同的含义,因此需要进行编码。 下面给出了完整的编码表。
  • 不安全字符 - 这些是空格、引号、小于符号、大于符号、井号字符、百分号字符、左花括号、右花括号、管道符、反斜杠、脱字符号、波形符、左方括号、右方括号、重音符号 。 由于各种原因,这些字符可能会在 URL 中被误解。 这些字符也应该始终被编码。 下面给出了完整的编码表。
编码表示法用三个字符替换所需的字符:一个百分号和两个对应于该字符在 ASCII 字符集中的位置的十六进制数字。

例子

最常见的特殊字符之一是空格。 您不能直接在 URL 中键入空格。 字符集中的空格位置为 20 个十六进制。 因此,在将请求传递给服务器时,您可以使用 %20 代替空格。

http://www.example.com/new%20pricing.htm

可以使用url解码工具解码上面的例子。

ASCII 控制字符编码

这包括字符范围 00-1F 十六进制(十进制 0-31)和 7F(十进制 127)的编码

十进制十六进制字符URL 编码
000 %00
101 %01
202 %02
303 %03
404 %04
505 %05
606 %06
707 %07
808backspace%08
909tab%09
100alinefeed%0a
110b %0b
120c %0c
130dcarriage return%0d
140e %0e
150f %0f
1610 %10
1711 %11
1812 %12
1913 %13
2014 %14
2115 %15
2216 %16
2317 %17
2418 %18
2519 %19
261a %1a
271b %1b
281c %1c
291d %1d
301e %1e
311f %1f
1277f %7f

非 ASCII 控制字符编码

这包括 ISO-Latin 集 80-FF 十六进制(十进制 128255)的整个“上半部分”的编码。

十进制十六进制字符URL 编码
12880%80
12981%81
13082%82
13183ƒ%83
13284%84
13385%85
13486%86
13587%87
13688ˆ%88
13789%89
1388aŠ%8a
1398b%8b
1408cŒ%8c
1418d%8d
1428eŽ%8e
1438f%8f
14490%90
14591%91
14692%92
14793%93
14894%94
14995%95
15096%96
15197%97
15298˜%98
15399%99
1549aš%9a
1559b%9b
1569cœ%9c
1579d%9d
1589ež%9e
1599fŸ%9f
160a0 %a0
161a1¡%a1
162a2¢%a2
163a3£%a3
164a4¤%a4
165a5¥%a5
166a6¦%a6
167a7§%a7
168a8¨%a8
169a9©%a9
170aaª%aa
171ab«%ab
172ac¬%ac
173ad­%ad
174ae®%ae
175af¯%af
176b0°%b0
177b1±%b1
178b2²%b2
179b3³%b3
180b4´%b4
181b5µ%b5
182b6%b6
183b7·%b7
184b8¸%b8
185b9¹%b9
186baº%ba
187bb»%bb
188bc¼%bc
189bd½%bd
190be¾%be
191bf¿%bf
192c0À%c0
193c1Á%c1
194c2Â%c2
195c3Ã%c3
196c4Ä%c4
197c5Å%c5
198c6Æ%v6
199c7Ç%c7
200c8È%c8
201c9É%c9
202caÊ%ca
203cbË%cb
204ccÌ%cc
205cdÍ%cd
206ceÎ%ce
207cfÏ%cf
208d0Ð%d0
209d1Ñ%d1
210d2Ò%d2
211d3Ó%d3
212d4Ô%d4
213d5Õ%d5
214d6Ö%d6
215d7×%d7
216d8Ø%d8
217d9Ù%d9
218daÚ%da
219dbÛ%db
220dcÜ%dc
221ddÝ%dd
222deÞ%de
223dfß%df
224e0à%e0
225e1á%e1
226e2â%e2
227e3ã%e3
228e4ä%e4
229e5å%e5
230e6æ%e6
231e7ç%e7
232e8è%e8
233e9é%e9
234eaê%ea
235ebë%eb
236ecì%ec
237edí%ed
238eeî%ee
239efï%ef
240f0ð%f0
241f1ñ%f1
242f2ò%f2
243f3ó%f3
244f4ô%f4
245f5õ%f5
246f6ö%f6
247f7÷%f7
248f8ø%f8
249f9ù%f9
250faú%fa
251fbû%fb
252fcü%fc
253fdý%fd
254feþ%fe
255ffÿ%ff

保留字符编码

下表是用于对保留字符进行编码的表。

十进制十六进制字符URL 编码
3624$%24
3826&%26
432b+%2b
442c,%2c
472f/%2f
583a:%3a
593b;%3b
613d=%3d
633f?%3f
6440@%40

不安全的字符编码

下表是用于对不安全字符进行编码的表。

十进制十六进制字符URL 编码
3220space%20
3422"%22
603c<%3c
623e>%3e
3523#%23
3725%%25
1237b{%7b
1257d}%7d
1247c|%7c
925c\%5c
945e^%5e
1267e~%7e
915b[%5b
935d]%5d
9660`%60