URL Escape 在线编解码
什么是URL 编码
URL 编码(URL encode),也称为百分号编码(percent-encoding),是一种将字符转换为可在 URL 中安全传输的格式的方法。
编码的目的
- 符合 URL 规范: URL 只能使用特定的字符集,包括字母、数字和一些特殊字符(如 -_.~ 等)。对于不在这个字符集中的字符,需要进行编码以便能够在 URL 中传输。 例如,空格在 URL 中是不允许直接出现的字符,会被编码为 %20。
- 防止歧义: 某些字符在 URL 中有特殊含义,如 /、?、& 等。如果不进行编码,可能会导致 URL 解析错误。例如,如果要在 URL 中传递一个包含问号 ? 的参数值,就需要对问号进行编码,否则会被误认为是参数分隔符。
编码规则
- 对于需要编码的字符,将其 ASCII 值转换为十六进制数,然后在前面加上 % 符号。 例如,字符 # 的 ASCII 值为 35,转换为十六进制为 23,所以在 URL 编码中,# 被编码为 %23。
- 保留字符和非保留字符: 保留字符包括用于分隔 URL 不同部分的字符(如 /、?、:、#、[、]、@、!、$、&、'、(、)、*、+、,、;、=)以及用于控制 URL 编码和解码的字符(如 %)。这些字符在特定情况下有特定的用途,一般情况下如果它们不是用于其特殊用途,也需要进行编码。 非保留字符包括字母、数字以及 -_.~ 这几个字符。这些字符可以直接出现在 URL 中而不需要进行编码。
应用场景
Go实现
url.QueryEscape("https://www.cyeam.com")
字符 | URL编码 | 说明 |
---|---|---|
空格 | %20 |
网页中最常用的编码之一,用于替换空格 |
斜杠 | %2F |
用于分隔 URL 路径(如
https%3A%2F%2Fexample.com
)
|
问号 | %3F |
URL 中查询参数的起始符号(如
?key=value
)
|
等号 | %3D |
查询参数中键值对的连接符(如
key%3Dvalue
)
|
与符号 | %26 |
多个查询参数的分隔符(如
key1%3Dvalue1%26key2%3Dvalue2
)
|
井号 | %23 |
用于 URL 锚点(如
#section
)
|
加号 | %2B |
表示空格或正号(在表单提交中常见) |
百分号 | %25 |
转义自身(因为 URL 编码以
%
开头)
|
逗号 | %2C |
用于分隔参数或路径(如 CSV 文件下载链接) |
冒号 | %3A |
用于分隔 URL 协议和端口(如
https%3A//
)
|
分号 | %3B |
在某些 URL 格式中用于分隔参数 |
大于号 | %3E |
符号
>
的编码
|
小于号 | %3C |
符号
<
的编码
|
感叹号 | %21 |
符号
!
的编码
|
星号 | %2A |
符号
*
的编码
|
单引号 | %27 |
符号
'
的编码
|
双引号 | %22 |
符号
"
的编码
|
括号 |
%28
(左)、
%29
(右)
|
符号
(
和
)
的编码
|
方括号 |
%5B
(左)、
%5D
(右)
|
符号
[
和
]
的编码
|
花括号 |
%7B
(左)、
%7D
(右)
|
符号
{
和
}
的编码
|
竖线 | %7C |
符号 `|` |
波浪线 | %7E |
符号
~
的编码
|
at 符号 | %40 |
符号
@
的编码(常用于邮箱地址在 URL 中)
|
美元符号 | %24 |
符号
$
的编码
|
英镑符号 | %A3 |
符号
£
的编码(根据字符集不同可能有差异)
|