Go工具集

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 中而不需要进行编码。

应用场景

  • 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 编码,以确保请求能够正确地被服务器解析。
  • Web Analytics Made Easy - Statcounter