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”,说的都是这个。
常见使用场景
- 把带中文和空格的搜索词拼进查询参数
- 解码日志里看到的 %E4%B8%AD 这类编码串
- 参数值含 & = ? 时先编码再拼接 URL
- 还原回调地址里的 redirect_uri 参数核对跳转
- 把一段 JSON 字符串放进 URL 前先编码
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。