URL 编码解码 打开工具

URL 编码怎么做:%XX 是怎么算出来的

URL 里只能出现一小部分 ASCII 字符。空格、中文、&、= 这些要么根本不能出现,要么会和结构符号混淆,所以必须转成 %XX 形式。规则只有一条:先把字符按 UTF-8 变成字节,再把每个字节写成两位十六进制并加 %。

为什么是 UTF-8 而不是 GBK

早期中文网站用 GBK 编码 URL,同一个「中」字在 GBK 下是 %D6%D0,在 UTF-8 下是 %E4%B8%AD。两种都能被对应的服务器解开,但混用就会出现乱码。

现代 Web 标准(含 HTML 表单默认编码)统一用 UTF-8,所以「中文」两个字编码后是 %E4%B8%AD%E6%96%87——每个汉字 3 个字节,每个字节一个 %XX,一共 6 个百分号。

看到只有 4 个 %XX 的中文,基本可以判定那是 GBK 编码的遗留数据。

哪些字符必须转义

RFC 3986 把字符分成三类:

空格有两种写法:%20 是标准,+ 是 application/x-www-form-urlencoded 表单的历史约定。在查询字符串里两者常被视为等价,在路径里 + 就是加号本身。

保留字符为什么不能随便转义

https://example.com/a?b=1&c=2 里的 / ? & = 是分隔符,不是数据。如果把它们也转义,整条链接就变成一坨没有结构的文本,服务器无法解析出路径与参数。

反过来,当一个参数值本身包含 & 或 =(比如搜索词是 a&b),就必须转义成 %26、%3D,否则会被解析成多一个参数。这是「值里带结构字符」的经典 bug。

粘贴即出结果

工具不需要点按钮:粘贴内容立刻显示编码或解码结果,双向都支持。结果可以一键复制,也可以回填到输入框继续处理(比如先编码一次,再整体编码一次做双重转义)。

编码与解码全部在浏览器本地完成,页面不发出任何携带内容的网络请求,带 token、带手机号的链接可以放心贴。

上面这些都不用装软件,也不用注册:打开页面就能用。

打开 URL 编码解码 →

常见问题

编码后的链接为什么会变得很长?

因为一个中文字符占 3 个字节,编码后变成 6 个字符(3 个 % 加 6 位十六进制)。一段 30 字的中文查询词编码后会膨胀到近 300 字符,可能撞上浏览器或服务器的 URL 长度限制,长内容建议放请求体而不是 URL。

为什么有的链接里是 + 而不是 %20?

表单提交(application/x-www-form-urlencoded)用 + 表示空格,这是 HTML 表单的历史约定。在路径段里 + 就是加号本身,不会被当成空格。

双重编码有什么用?

当编码后的结果要作为另一个参数的值再传一次时,需要再编码一遍(% 本身变成 %25)。典型场景是跳转链接里带一个完整 URL。多编一层很常见,多编两层通常说明拼接逻辑有问题。