编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 编码解码 / URL编解码

URL编解码

URL 编码和解码。

输入
结果

这个工具能做什么

网址里能直接出现的字符其实很有限,标准只允许 ASCII 中的字母、数字和少数符号裸露在 URL 里。一旦查询参数里出现中文、空格,或者 & = ? # 这类本身在 URL 语法中有特殊含义的符号,浏览器和服务器就会解析错乱,参数被截断或拆错。这个工具做的事很直接:把这些字符编码成 %xx 形式,塞进网址参数不会出问题;也能把别人给你的、或者日志里抓到的一长串 %E4%B8%AD 解码回可读文本。整个 url编码、url解码过程在浏览器本地完成,本地处理不上传。

它背后是 RFC 3986 定义的百分号编码(percent-encoding)。具体到实现,工具用的是 encodeURIComponent:先把每个字符按 UTF-8 编码成字节序列,再把每个字节写成百分号加两位十六进制,比如汉字「中」在 UTF-8 下是三个字节 E4 B8 AD,编码结果就是 %E4%B8%AD。字母数字以及 - _ . ! ~ * ' ( ) 这些字符被视为安全字符,保持原样不动。解码则是 decodeURIComponent 的逆过程,按 %xx 把十六进制读回字节,再当作 UTF-8 还原成文字。理解「先转字节再转十六进制」这一层,就能明白为什么一个中文会变成三段 %xx,而不是想当然的一段。

最常见的用法是拼查询字符串。比如搜索关键词是「北京 天气&晴」,直接拼进 ?q=北京 天气&晴 会因为空格和 & 彻底散架;先用本工具把值 urlencode 成 %E5%8C%97%E4%BA%AC%20%E5%A4%A9%E6%B0%94%26%E6%99%B4,再拼到 q= 后面就安全了。反过来,排查线上问题时经常在 Nginx 日志或抓包里看到 redirect_uri=https%3A%2F%2Fexample.com%2Fcb%3Fid%3D9,把它 urldecode 一下就还原成 https://example.com/cb?id=9,一眼看清跳转地址到底带了什么参数,核对回调链路时特别省事。

有两个点容易踩坑。一是 encodeURIComponent 和 encodeURI 的区别:本工具走的是 encodeURIComponent,会把 : / ? # & = 这些结构符号也一并编码,适合处理「单个参数值」;如果你要编码一整条 URL、又想保留它的层级结构,那才该用 encodeURI,别把两者搞混。二是空格问题:这里空格编码成 %20,而不是 +;+ 是 application/x-www-form-urlencoded 表单提交的历史约定,两套规则不能混用,否则解码方按错规则处理就会出现多余的加号或空格。另外注意不要重复编码,对已经编码过的串再 encode 一次,% 会被转成 %25,产生 %2520 这种双重编码;解码时如果输入里有落单的 % 或残缺的 %E4,decodeURIComponent 会直接抛错。

URL编解码是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“url编码”、“url解码”、“urlencode”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

URL编码和URL解码到底在做什么?
编码是把中文、空格、& = ? # 等不能安全出现在网址里的字符,转成 %xx 这样的百分号形式;解码是反过来把 %xx 还原成原本的可读文本。目的是让这些字符能安全地放进 URL 的参数里而不被误解析。
空格为什么被编码成 %20,而不是常见的加号 +?
本工具用 encodeURIComponent,规范里空格对应 %20。加号 + 表示空格是 application/x-www-form-urlencoded 表单编码的约定,只在这类场景成立。两套规则不通用,混用会导致解码后出现多余的空格或加号。
一个汉字为什么会被编码成三段 %xx?
因为编码前先按 UTF-8 把字符转成字节,绝大多数汉字在 UTF-8 下占三个字节,每个字节对应一段 %xx,所以「中」会变成 %E4%B8%AD。这不是出错,是 UTF-8 加百分号编码的正常结果。
这个工具用的是 encodeURIComponent 还是 encodeURI?有什么区别?
用的是 encodeURIComponent,它会把 : / ? # & = 等结构字符也一起编码,适合处理单个参数值。encodeURI 则保留这些字符不编码,用于处理一整条完整 URL。放参数值就用本工具,别用 encodeURI。
为什么解码时报错,或者解出来是乱码?
报错通常是输入里有落单的 % 或不完整的 %xx 序列(如残缺的 %E4),decodeURIComponent 无法解析就会抛错。乱码则多半是原串本来不是 UTF-8 编码,或者被重复编码过一次,先检查是否存在 %25 这类双重编码痕迹。

相关工具

查看全部「编码解码」工具 →

相关名词解释