Go 工具集
《Go优化之路》
口算大通关
Geek头条
博客
Go工具集
格式化JSON
文本编辑
文本Diff
时间戳
cURL命令转换生成Go代码
JSON 转 Go 结构体
JSON 转 Thrift
JSON 转 SQL DDL
SQL 生成 Go 结构体
SQL格式化
MessagePack 转 JSON
格式化 XML
XML 转 Go 结构体
XML 转 JSON
编解码
Url Escape 解码
HTML 编解码
Hex 十六进制编解码
Base 32 编解码
Base 64 编解码
宝宝系列
口算大通关
查字典模版
查字典工具
看拼音写字
其他
单位换算
字符画
URL Escape 在线编解码
copy
copy
UrlEncode编码
UrlDecode解码
什么是URL 编码
URL 编码(URL encode),也称为百分号编码(percent-encoding),是一种将字符转换为可在 URL 中安全传输的格式的方法。
编码的目的
符合 URL 规范:
URL 只能使用特定的字符集,包括字母、数字和一些特殊字符(如 -_.~ 等)。对于不在这个字符集中的字符,需要进行编码以便能够在 URL 中传输。 例如,空格在 URL 中是不允许直接出现的字符,会被编码为 %20。
防止歧义:
某些字符在 URL 中有特殊含义,如 /、?、& 等。如果不进行编码,可能会导致 URL 解析错误。例如,如果要在 URL 中传递一个包含问号 ? 的参数值,就需要对问号进行编码,否则会被误认为是参数分隔符。
编码规则
对于需要编码的字符,将其 ASCII 值转换为十六进制数,然后在前面加上 % 符号。
例如,字符 # 的 ASCII 值为 35,转换为十六进制为 23,所以在 URL 编码中,# 被编码为 %23。
保留字符和非保留字符:
保留字符包括用于分隔 URL 不同部分的字符(如 /、?、:、#、[、]、@、!、$、&、'、(、)、*、+、,、;、=)以及用于控制 URL 编码和解码的字符(如 %)。这些字符在特定情况下有特定的用途,一般情况下如果它们不是用于其特殊用途,也需要进行编码。 非保留字符包括字母、数字以及 -_.~ 这几个字符。这些字符可以直接出现在 URL 中而不需要进行编码。
应用场景
URL 参数传递:
当通过 URL 传递参数时,如果参数值中包含特殊字符或非 ASCII 字符,就需要进行 URL 编码。例如,在一个搜索页面的 URL 中,如果用户输入的搜索关键词包含空格或其他特殊字符,就需要对关键词进行编码后再添加到 URL 中。 如 https://www.example.com/search?q=hello%20world,这里的 hello world 经过 URL 编码后变为 hello%20world。
表单提交:
当通过 HTML 表单提交数据时,如果表单字段的值包含特殊字符,浏览器会自动对表单数据进行 URL 编码后再发送给服务器。 例如,一个包含用户名和密码的登录表单,如果用户名包含特殊字符,在提交表单时,浏览器会对用户名进行 URL 编码后将其包含在请求 URL 中。
AJAX 请求:
在使用 JavaScript 进行 AJAX 请求时,如果请求的 URL 或参数中包含特殊字符,也需要进行 URL 编码,以确保请求能够正确地被服务器解析。